c++関数の後にコロンを付ける意味

2212 ワード

   :https://zhidao.baidu.com/question/2010930169328038188.html

         ,     C++   。
A( int aa, int bb ):a(aa),b(bb)
{
}
   
A( int aa, int bb )
{
a=aa;
b=bb;
}





C++コンストラクション関数の後のコロン
コンストラクション関数の後にコロンを付けるのは初期化式です:4つの場合、初期化式を使用してメンバーを初期化する必要があります:1:constメンバーを初期化2:参照メンバーを初期化3:ベースクラスのコンストラクション関数を呼び出し、パラメータのセットを持つ場合
4:メンバークラスのコンストラクション関数が呼び出され、パラメータのセットがある場合.
プログラムで変数を定義して初期化するメカニズムには、2つの形式があります.1つは、従来の初期化の形式、すなわち、賦値演算子の賦値であり、もう1つは、int a=10などの括弧の賦値です.    char b='r';//付与演算子付与int a(10);/    char b('r');//括弧賦値以上の定義と初期化の形式は正しく、コンパイルすることができるが、括弧賦値は変数定義と初期化にのみ使用でき、変数定義後に賦値することはできない.
コロン初期化は、データ・メンバーにメモリ領域を割り当てるときに初期化されます.つまり、コロンの後にこのデータ・メンバーの付与式(この式はカッコ付与式でなければなりません)がある限り、メモリ領域が割り当てられた後、関数体に入る前にデータ・メンバーに付与されます.つまり、このデータ・メンバーを初期化するとき、関数体はまだ実行されていません.関数での初期化は、すべてのデータ・メンバーがメモリ・スペースを割り当てられた後に行われます.これにより、構造関数の呼び出し後に関数体が実行される前に、参照データメンバー、定数データメンバー、オブジェクトデータメンバーなどの初期化を行う必要があるデータ・メンバーがあります.
class student
   {public :

     student ()
      .
      .
      .
     protected:
     const int a;
     int &b;

   }

   student ::student (int i,int j)
  {
     a=i;
     b=j;
   } 

  
Studentクラスには2つのデータメンバーがあり、1つは定数データメンバーであり、1つは参照データメンバーであり、コンストラクション関数ではこれら2つのデータメンバーを初期化したが、定数初期化時に値を付与しなければならないため、その値はこれ以上変更できず、定数と同様に参照初期化にも値を付与する必要があり、参照を定義すると、参照されたターゲットとつながっていて、これ以上値を付けることはできません.したがって、C+「:」後に初期化されるメカニズムは、参照と定数データメンバーを可能にし、Studioクラスの構築関数は次のようになります.
student::student(int i,int j):a(i),b(j)
{
}
変換元:http://blog.csdn.net/kaixinbingju/article/details/9094289
 
C++の構造関数の後にコロンを付ける


#include
class A
{
public:
int x;
A(int a=0){x=a}; }
};
class B1:publicA
{
public;
int y1;
B1(int a=0,int b=0):A(b) //
{ y1=a; }
};

:A(b) , B1 ?
 :A(b)        b   A   x; x=b; :        ,