2
ここで混乱しました。 this
を初期化リストに渡しても、プログラムはコンパイルされて正常に実行されています。 this
をここで渡すと、ここでオブジェクトが作成されていないため、コンパイラは何らかのエラーを出すはずです。このポインタで初期化するリスト
cout
の両方の出力は同じです。すなわち、それらは同じアドレスを保持する。
私はこれが正しいプログラミング方法論ではないことを知っていますが、正確に何が起こっていますか?オブジェクトが完全にそのアドレスが知られており、ポインタに割り当てることができ、まだ初期化されていない場合でも
class foo
{
public:
foo():myself(this) {}
foo * myself;
};
int main()
{
foo f;
cout<<f.myself<<endl;
cout<<&f<<endl;
return 0;
}