class A
{
public:
A(const int a1):aa(a1)
{
}
private:
const int aa;
};
class B
{
public:
B(const int b1,const int b2,const int b1):aaa(a1)
{
}
private:
A aaa[3];
};
请问A aaa[3];怎么初始化
在构造函数中初始化,或者直接初始化
A aaa[3] = { A(1), A(2), A(3) };
或者
构造函数
for (i = 1; i < 3; i++)
aaa[i] = ...
如果支持C++11,可以使用统一初始化,在构造函数初始化器中初始化类成员数组 。
class B
{
public:
B(const int b1, const int b2, const int b3) :aaa{ A(b1), A(b2), A(b3) }
{
}
private:
A aaa[3];
};
如果不支持C++11遵循下面的原则:
1.类里面的任何成员变量在定义时是不能初始化的。
2.一般的数据成员可以在构造函数中初始化。
3.const数据成员必须在构造函数的初始化列表中初始化。
4.static要在类的定义外面初始化。
5.数组成员是不能在初始化列表里初始化的。
6.不能给数组指定明显的初始化。
PS:老老实实一个个赋值吧