2013-04-13 19 views
7

C++標準によると:C++標準レイアウトと参照

標準レイアウトクラスがそのクラスである:

-has型非standard-のない非静的データメンバレイアウトクラス(またはそのような型の配列)または参照。参照の

何プロパティ(IES)は、標準的なレイアウトクラスの定義に含まれているから、基準部材を持つクラスを防ぎますか?

+0

このようなプロパティが存在すると思われますか?必要はありません。 – Yakk

+0

"予防"は強い言葉です。 1つの観点から、参照はコンパイラに構造体を抽象データ型ではなくむしろ扱う良い言い分を与えるだけです。ストレージレイアウト仕様。参考文献には、自分自身の*すべての記憶領域を持つ必要はありません。 – jthill

答えて

11

標準のレイアウトクラスはすべて、特定のタイプのレイアウトをよく定義したもので、メモリです。 C++では、参照はオブジェクトではないため、実装には通常実装用のストレージが必要ですが、準拠しているプログラムによって適切に定義された方法でアクセスできるストレージはありません。

この理由から、標準レイアウトを持つ必要のある参照メンバを持つことは意味がありません。

これは言及C++メモリモデルについてのセクションでは、標準では非規範的なノートあります:

[注:このような参照や仮想関数などの言語の様々な特徴、追加伴うかもしれませんがプログラムにアクセスできないが実装によって管理されるメモリロケーション。 -end note]

+0

偉大な答えをありがとう:それは完璧な意味があります。 – TRISAbits

関連する問題