隐式调用的基类构造函数
Baseclass Constructor implicitly called
我正在处理一个大型项目,在整个代码中,我们让类类型化基类并在初始值设定项列表中调用其构造函数。这是为什么呢?我在下面构建了一个示例,显示了通常要做的事情。据我所知,构造函数没有发生任何差异。有什么好处?我尝试了谷歌,但没有结果。
#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");
}
相关文章:
- C++17 使用驱动类常量作为基类构造函数的参数来初始化基类构造函数
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- 在成员构造函数之后调用基类构造函数
- 如何在将原始指针移动到基类构造函数之前从unique_ptr中提取原始指针
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- 如何在 C++ 中将参数传递给基类构造函数
- 将数据成员的指针传递给基类构造函数是否安全?
- 使用基类构造函数初始化儿童类
- 使用基类构造函数的子类构造函数的大纲定义
- MSVC 无法识别继承模板类的模板类的"直接"基类构造函数
- 子类的构造函数后跟冒号后的基类构造函数是什么意思?
- 是否可以使用基类构造函数通过派生类将值初始化为基类私有成员?
- 当派生类无法轻易将参数传递到基类时,如何调用基类构造函数
- 是否可以在运行时切换到不同的基类构造函数?
- 对基类构造函数的未定义引用
- 如何为基类构造函数中的每个子类执行特定任务
- 将类传递到基类构造函数的模板参数中?
- 如何在基类构造函数中使用派生类成员
- (为什么)纯虚拟派生类中是否需要虚拟基类构造函数调用?
- 使用相同的参数调用基类C++构造函数