私はC++ 11規格案(N3242改訂)を読み、次の文に出くわした: 参照メンバー
(12.7建設と破壊)。重大ではないコンストラクタを持つオブジェクトの場合、コンストラクタが実行を開始する前にオブジェクト の非静的メンバまたは基本クラスを参照すると、結果が不定になります。
私はFoo
の次のデフォルトコンストラクタを理解するように未定義の動作をしている(それがユーザー定義されているので、コードi(&a.i)
? の作品にFoo
のコンストラクタは、(簡単ではありません)、私は、コンストラクタの実行前にメンバーa
を参照しています。
struct A
{
int i;
};
struct Foo
{
A a;
int* i;
Foo() : a(), i(&a.i)
{}
};
UPD:多分タイプint*
のメンバーの使用量はそれほど有益ではない(タイプint
は、例えば、より適している)
_ "メンバーのコンストラクタを実行する前に参照しています。" _いいえ、そうではありません。あなたは 'a()'で構築しました。 'a.i'は初期化されていませんが、アドレスを取ってもOKです。 –
メンバー 'i'は 'int'型ですか?それは大丈夫ですか?私はそのようなC + +の文の意味を理解することはできません11 – LmTinyToon
@underscore_d、あなたは間違ったrefferingの例を挙げてくださいできますか?それは本当に私を混乱させる – LmTinyToon