这个构造函数是否正确?

时间:2014-01-28 21:46:19

标签: c++

我有两个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无关?

2 个答案:

答案 0 :(得分:9)

这是对的。但是,由于b属于类类型,如果b的初始化列表中未提及A::A,则会自动调用默认构造函数,因此您无需提及它一点都不。

答案 1 :(得分:4)

此方法将使用构造函数b初始化字段B::B()。它不会创建临时本地。

请注意,在这种特殊情况下,它也是不必要的。为A生成的默认构造函数将自行完成。在这里明确是没有错的,这只是不必要的