假设我在一个类中有几个对象,每个对象都需要使用不同的值进行构造。我可以这样写:
class b
{
public:
b(int num)
{
// 1 for a.b1, and 2 for a.b2
}
};
class a
{
public:
b b1;
b b2;
a() : b1(1), b2(2)
{
}
};
但是,如果这些多个对象存储在数组中,是否可以做同样的事情?
我第一次尝试它不会编译:
class a
{
public:
b bb[2];
a() : bb[0](1), bb[1](2)
{
}
};
答案 0 :(得分:2)
你不能直接这样做;您需要初始化构造函数体中的数组元素。
在输入构造函数的主体之前,默认构造数组的元素。由于您的示例类b
不是默认可构造的(即,它没有可以使用零参数调用的构造函数),因此您不能将b
数组作为成员变量。
当你可以explicitly initialize the array时,你可以拥有一个在其他情境中不是默认构造类型的数组。