2011-01-25 11 views
2

可能性の重複:実装継承、:
What is this weird colon-member syntax in the constructor?C++のコンストラクタ形式

こんにちは、

サムス自身が21日ブック、12日目にC++を教えるでこのコードスニペットは

です

哺乳類():itsAge(2)、itsWeight(5){}

が言ってこの等価はありますか?

Mammal() 
{ 
itsAge(2); 
itsWeight(5); 
} 

最初のフォームにはどのような利点がありますか?特に本の使用法は?

ありがとうございました。

+4

これはFAQリストにあります:[コンストラクタのこの奇妙なコロンメンバー構文は何ですか?](http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax - コンストラクタ内)(特に[ジョシュの答え](http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor/1712011#1712011を参照してください) )。二重引用符としてクローズするよう投票した。 – sbi

+2

これらの@alias投稿は、@SWEngineer投稿に非常によく似ています。内容、頻度、自己助力の試みが不足しています。 –

+1

@Paul:興味深い観察。ちなみに、aaliは2日前に参加しました。これはSWEngineerが50以上の愚かな質問を投稿してから半年休止した時です。私は司会者がこれを見るように指示した。 – sbi

答えて

0

読む程度Initialization list.

あなたがたとえば、あなたのデータメンバー

を初期化する初期化リストを使用する必要があります。

class A 
{ 
    int k; 
    const int l; 
    int & p; 

    A(int a, int b, int c){ 

     k = a ; // assignment 
     l = b ; Arghh!! 
     p = c ; WTF ?? 
    } 
}; 

がill-であるのに対し、

class A 
{ 
    int k; 
    const int l; 
    int & p; 

    A(int a, int b, int c) : k(a), l(b), p(c) {} // k,l and p are initialized 
}; 

が正しいですか形成された

クラスにconstreferenceデータメンバーが含まれている場合は、初期化リストを使用する必要があります。