隐式调用的基类构造函数

Baseclass Constructor implicitly called

本文关键字:基类 构造函数 调用      更新时间:2023-10-16

我正在处理一个大型项目,在整个代码中,我们让类类型化基类并在初始值设定项列表中调用其构造函数。这是为什么呢?我在下面构建了一个示例,显示了通常要做的事情。据我所知,构造函数没有发生任何差异。有什么好处?我尝试了谷歌,但没有结果。

#include <stdio.h>
class A
{
    public:
    A()
    {
        printf("A Constructedn");
    }
};
class B : public A
{
    public:
    typedef A super;
    B()
    :super()
    {
        printf("B Constructedn");
    }
};
int main()
{
    B b;
    return 0;
}

A是类B的一部分。

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

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

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

 B()
 {
     printf("B Constructedn");
 }