C++クラスのメンバー変数の初期化の概要
1255 ワード
1.通常の変数:
一般的に効率を考慮せずに構造関数に付与することができる.効率を考慮した再構築可能な関数の初期化リストで行う.
static変数はクラスの所有であり、クラスのオブジェクトではないため、クラスがインスタンス化されたオブジェクトの数にかかわらず、この変数は1つしかありません.この性質では,グローバル変数の一意性に少し似ていることが理解される.
const定数は宣言時に初期化する必要があります.そのため、変数の作成時に初期化する必要があります.一般的には、コンストラクション関数の初期化リストで行います.
参照型変数はconst変数と似ています.作成時に初期化する必要があります.初期化リストでも行います.ただし、Referenceタイプを使用することに注意してください.
まとめると、初期化できる場合は、1、クラスの定義で行われるのはconstかつstaticかつintegralの変数のみである.2.クラスのコンストラクション関数初期化リストには、constオブジェクトとReferenceオブジェクトが含まれます.3、クラスの定義以外に初期化されたもので、static変数を含む.クラスに属する唯一の変数だからです.4、一般的な変数は、コンストラクション関数の内部で、付与方式で行うことができる.もちろん効率は高くありません.
一般的に効率を考慮せずに構造関数に付与することができる.効率を考慮した再構築可能な関数の初期化リストで行う.
class CA
{
public:
int data;
public:
CA();
};
/*********/
CA::CA():data(0) //……#1……
{
//data = 0;//……#1…… 12
};
、static静的変数:static変数はクラスの所有であり、クラスのオブジェクトではないため、クラスがインスタンス化されたオブジェクトの数にかかわらず、この変数は1つしかありません.この性質では,グローバル変数の一意性に少し似ていることが理解される.
class Test
{
public:
static int sum;
public:
Test();
};
int Test::sum=0; //……#2……
3、const定数変数:const定数は宣言時に初期化する必要があります.そのため、変数の作成時に初期化する必要があります.一般的には、コンストラクション関数の初期化リストで行います.
class Test
{
public:
const int max;
public:
Test();
};
Test::Test():max(100)
{
}
4、Reference参照型変数:参照型変数はconst変数と似ています.作成時に初期化する必要があります.初期化リストでも行います.ただし、Referenceタイプを使用することに注意してください.
class Test
{
public:
int it;
int& counter;
public:
Test();
};
Test::Test(): counter(&it)
{
}
まとめると、初期化できる場合は、1、クラスの定義で行われるのはconstかつstaticかつintegralの変数のみである.2.クラスのコンストラクション関数初期化リストには、constオブジェクトとReferenceオブジェクトが含まれます.3、クラスの定義以外に初期化されたもので、static変数を含む.クラスに属する唯一の変数だからです.4、一般的な変数は、コンストラクション関数の内部で、付与方式で行うことができる.もちろん効率は高くありません.