2012/10/11

C++のコンストラクタにある「:(コロン)」について

C++のコンストラクタを書くところに「:」がついているものがある.

たとえばこれ

class testclass
{
private:
    int num_int;
    double num_dou;
 
public:
    testclass()
        :num_int( 0 )
        ,num_dou( 1.2 )
    {
    }
}

これはコンストラクタが呼ばれたときにメンバ変数を「( )」の中の値で初期化しているらしい.
つまり,コンストラクタが呼ばれたときは「num_int」は「0」となり,「num_dou」は「1.2」となる.

でも,これは次と同じように見える.

class testclass
{
private:
    int num_int;
    double num_dou;
 
public:
    testclass()
    {
        num_int = 0 
        num_dou = 1.2
    }
}

しかし,この2つの違いは,

上はメンバ変数をそれぞれの値で初期化していること.

下はメンバ変数に値を入れていること.

という違いがあるらしい.

参考にしたサイト

コンストラクタで書かれるコロン「:」って何?|C++ フリーでぷろぐらみんぐ
http://ameblo.jp/nana-2007-july/entry-10037680575.html

コンストラクタでは、代入よりも初期化を使おう 12項 - Higepon’s blog - Mona OS and Mosh
http://d.hatena.ne.jp/higepon/20051107/1131335521


0 件のコメント:

コメントを投稿