C++クラスメンバーとデータメンバーの初期化概要

1313 ワード

C++はクラスにクラスメンバーの初期化リストを提供する.
クラスオブジェクトの構造順序は、1.メモリを割り当て、コンストラクション関数を呼び出すと、暗黙/表示の各データメンバー2を初期化する.コンストラクション関数に入る、コンストラクション関数で一般計算を実行する.クラス内の任意のメンバー変数は、定義時に初期化できません.  2.一般的なデータ・メンバーは、コンストラクション関数で初期化できます.  3.constデータメンバーは、コンストラクション関数の初期化リストで初期化する必要があります.  4.staticはクラスの定義の外で初期化します.      5.配列メンバーは初期化リストで初期化できません.  6.配列に顕著な初期化を指定できません. 
この6つは、C++の中で定数配列を定義できないという問題を説明しています.3と5の矛盾のためです.このことは言えないようですね.仕方なく、静的データ・メンバーに助けを求めたり、列挙を使用したりするしかありません.これで、私の問題は解決します.しかし、私はまた機会にC++クラスの初期化を復習したいと思っています:1.初期化リスト:
Demo::Demo() : x(3), y(5)
{
}

  2.クラス外初期化:int CSomeClass::myVar=3;  3.const定数定義は初期化しなければならず、C++クラスでは初期化リストを使用する.  4.C++クラスは定数配列を定義できません.
C++クラスでは、次のことをしなければなりません.
1.任意のconstまたは参照タイプのメンバー、およびデフォルトのコンストラクション関数のないクラスタイプの任意のメンバーを表示して初期化リストを使用して初期化する必要があります.
2.クラスメンバーは定義時に初期化できない.
3.クラスのメンバー初期化順序は、メンバー変数のコンストラクション関数での位置選択後の順序に関係なく、クラスで定義されたメンバー変数の前後順序に関係します.
例:
class Demo
 {
   int first; 			//      
   int second;			//      
 
 public :
   Demo( int value):second(value),first(second)
   {
   }
 }
この初期化リストの順序は間違っており、まずメンバー変数を宣言するときにfirstがsecondより先になるので、初期化順序はfirstを初期化してからsecondになります.ただし、初期化リストのfirstの初期値はsecondの値なので、このような初期化順序は間違っています.