我有两个A和B类,而在A类中我有一个B类成员:
class B {
public:
B(); //default constructor
};
class A {
public:
A(); //constructor
B b;
};
这是A类构造函数的定义:
A::A() : b()
{}
在这里,我尝试使用初始化列表初始化b
。我的问题是,这种方法初始化b
是正确的,还是我只是在A的构造函数中创建另一个名为b
的临时对象,与A::b
无关?
答案 0 :(得分:9)
这是对的。但是,由于b
属于类类型,如果b
的初始化列表中未提及A::A
,则会自动调用默认构造函数,因此您无需提及它一点都不。
答案 1 :(得分:4)
此方法将使用构造函数b
初始化字段B::B()
。它不会创建临时本地。
请注意,在这种特殊情况下,它也是不必要的。为A
生成的默认构造函数将自行完成。在这里明确是没有错的,这只是不必要的