2012-03-30 14 views
0

可能性の重複:C++の初期化

C() : i(new A()) { } 

マイ:
Class construction with initial values

私はhttp://en.wikipedia.org/wiki/Delegation_patternに、私は前に私が見ていない何かに気づい++の例Cを見ていたが問題は:このコード行はどのように異なっていますか:

C() { 
    i = new A(); 
} 

コンストラクタの後に:は何をしますか? new A()の角括弧は何をしていますか?

+0

も可能【初期値とクラス構成](http://stackoverflow.com/questions/7207884/class-construction-with-initial-values)の複製と:http://stackoverflow.com/質問/ 4589237/c-initialization-lists –

+0

何が呼び出されたのかわからなかったので、何を検索するのか分からなかった、重複して申し訳ありません、リンクしたトピックを読みます。ありがとう。 – karthaxx

答えて

4

initialization listと呼ばれます。これは、クラスのデータメンバーを初期化するために使用されます。

C() { 
    i = new A(); // i is not initialized here, here assignment is taking place. 
} 
+0

宣言と同じ順序でそれらを行う理由は数多くあります。 –

+1

また、C++ 11以前では、メンバ初期化子構文でのみconstメンバを初期化できました。 – chris

+0

@EdHealクラス変数の初期化のシーケンスは、それを宣言するシーケンスに過ぎないためです。 – xis