型T
がクラスかどうかを確認するために使用できることを確認しました。
bool isClass = std::is_class<T>::value;
クラスと構造体の両方に対してtrueを返します。C ++でもそれらはほとんど同じであることは知っていますが、型の特性でこれらの違いがない理由を知りたいのですが。この違いを確認することは常に役に立たないのですか、それとも理解できない理由がありますか?
クラスと構造体の両方に対してtrueを返します。C ++でもそれらはほとんど同じであることは知っていますが、型の特性でこれらの違いがない理由を知りたいのですが。
残念ながら、これはC ++でよくある誤解です。根本的な誤解に起因する場合もありますが、英語の曖昧性に起因する場合もあります。それは、不正確なコンパイラー診断、不適切に書かれた本、誤ったSOの回答から生じる可能性があります…
あなたはおそらく次のようなものを読んだでしょう:
「メンバーとベースのデフォルトの可視性を除いて、構造体とクラスのC ++に違いはありません。」
この箇所は、誤解を招くような意味で解釈される可能性があります。「違いなし」などのフレーズを使用する場合、同一性と同等性の概念を区別するのが難しいためです。
実際、C ++には1985年以来構造体がありません。クラスしかありません。
キーワードclass
とキーワードで宣言するタイプの種類struct
はクラスです。限目。キーワードstruct
と、そのキーワードを使用してクラスを定義するときにデフォルトである可視性ルールは、Cとの下位互換性のためにのみ保持されていましたが、それは構文的なものです。結果の型が実際に異なる種類になるわけではありません。
文字通り作成するタイプがないため、タイプ特性は区別されません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加