C++初期化リスト
摘抄:銭能の《C++プログラム設計教程》
一、初期化が必要なデータメンバーがオブジェクトである場合.
二、const修飾のクラスメンバーを初期化する必要がある.
三、参照メンバーデータを初期化する必要がある.
四、初期化の順番に違いがあることに注意してください.上から下へ、左から右へ.
一、初期化が必要なデータメンバーがオブジェクトである場合.
二、const修飾のクラスメンバーを初期化する必要がある.三、参照メンバーデータを初期化する必要がある.
定数(const)は付与できないからです.
参照も再割り当てできません.
テスト
一、初期化が必要なデータメンバーがオブジェクトである場合.
二、const修飾のクラスメンバーを初期化する必要がある.
三、参照メンバーデータを初期化する必要がある.
四、初期化の順番に違いがあることに注意してください.上から下へ、左から右へ.
class point
{
private:
int x,y;
public:
point(int m=0,int n=0):x(m),y(n)
{
x=m;
y=n;
}
……
};
一、初期化が必要なデータメンバーがオブジェクトである場合.
class AAA
{
private:
int aa;
public://
AAA(int i):aa(i){}
//public://
// AAA(int i)
// {
// aa = i;
// }
};
class BBB
{
private:
AAA oo;
public:
BBB(int i):oo(i) { }
};
二、const修飾のクラスメンバーを初期化する必要がある.三、参照メンバーデータを初期化する必要がある.
定数(const)は付与できないからです.
参照も再割り当てできません.
class Test
{
private:
const int boy;
int& girl;
public:
Test(int i, int& j):boy(i), girl(j) { }
};
テスト
#include <iostream>
using namespace std;
class TestInit
{
int aa;
int bb;
public:
// : , , aa = 0 bb = 0
// : , , aa = 2147348480 bb = 30089830
// TestInit( ){}
// : , a b, aa = -1 bb = -1
// TestInit( ):aa(-1), bb(aa) {}
// : , b a, aa = 30089830 bb = -1
// TestInit( ):bb(-1), aa(bb) {}
void print()
{
cout<<"aa = "<<aa<<" bb = "<<bb<<endl;
}
};
int main()
{
TestInit( ).print();
return 0;
}