class ClassB
{
int option;
public:
ClassB(void){} //without the default constructor, the example does not compile.
ClassB(int option)
{
this->option = option;
}
};
class ClassA
{
ClassB objB; //initialize objB using default constructor. When does this actually occur?
public:
ClassA(int option)
{
objB = ClassB(option); //initialize objB again using another constructor.
}
};
int main(void)
{
ClassA objA (2);
return 0;
}
我是 c++ 新手(来自 c#),我对如何初始化类变量有点困惑。在上面的例子中,ClassA 声明了一个 ClassB 类型的类对象,按值存储。为此,ClassB 必须具有默认构造函数,这意味着 ClassA 首先使用默认构造函数创建 ClassB。但是 ClassA 从不使用这个默认的 objB,因为它会立即在 ClassA 的构造函数中被覆盖。
所以我的问题是: objB 实际上被初始化了两次吗?
如果是这样,那不是不必要的步骤吗?将 objB 声明为指针会更快吗?
如果没有,为什么 ClassB 需要有一个默认构造函数?