2012-04-25 32 views
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; 
    } 

答えて

2

このイディオムは一般的ではありませんが、リンクリストの初期化などに使用されています。

関連する問題