隐式调用Baseclass构造函数

时间:2014-12-08 16:19:35

标签: c++

我正在处理一个大项目,在整个代码中我们有类typedef基类并在初始化列表中调用它的构造函数。为什么是这样?我在下面构建了一个示例,显示了通常所做的事情据我所知,施工人员没有任何区别。有什么好处?我试过谷歌但没有结果。

#include <stdio.h>

class A
{
    public:
    A()
    {
        printf("A Constructed\n");
    }
};

class B : public A
{
    public:

    typedef A super;

    B()
    :super()
    {
        printf("B Constructed\n");
    }
};

int main()
{
    B b;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

班级A是班级B的一部分。

如果在构造A的实例时未调用B的构造函数,则会导致代码非常不稳定。 (例如,A的所有成员数据都将未初始化。

可以指定A的哪个构造函数,如果需要,可以使用基本成员初始化程序。

在您的情况下,使用基本成员初始化程序是多余的:您可以编写

 B()
 {
     printf("B Constructed\n");
 }