此时是构造函数中调用的基类的构造函数
At which point are the constructors of base classes called in a constructor
我需要知道在派生类构造函数的调用中何时调用基类的构造函数。
Small example:
class Base1
{...}
class Base2
{...}
class Derived : Base1,Base2
{...}
int main (int argc, char** argv)
{
Derived Child;
}
使用命令Derived Child;
调用Derived
的构造函数,但我已经读到,在执行Derived
类构造函数之前,会执行所有的基构造函数,即Base1和Base2的构造函数。
所以我想知道如果类Derived
的构造函数看起来像这个,那么事件顺序会是什么样子
Derived::Derived (Parameters)
: //initialization list
Base2 (Parameters)
{...}
类Base2
的构造函数现在在构造函数Derived
的初始化列表中被调用,还是以前被调用。此外,在构造函数Derived
的调用开始时或在类Derived
构造函数的初始化列表开始时调用的所有基类构造函数。
问候streight
构造函数的调用顺序是1st基类,然后是派生类。
在当前示例中构造函数的调用顺序为:基础1基础2衍生
如果我们将类定义更改为
派生类:Basis2、Basis1
则构造函数调用的顺序为:基础2基础1衍生
基类构造函数总是在派生类之前调用,无论是否从初始化列表中显式调用。
相关文章:
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- 参数包构造函数在类模板中隐藏用户定义的转换
- 具有已删除移动和复制构造函数的类的就地构造
- 创建一个没有复制构造函数的类的 std::vector 的 std::vector
- C++构造函数和类?
- 在 C++ 中,默认情况下构造函数为类的数据成员提供的值是多少?
- 如何在其他类中使用参数化构造函数制作类的对象?
- 具有值包装器的可变参数模板构造函数的类构造函数优先级
- 如何使用私有构造函数对类进行单元测试?
- C++虚拟函数:基类函数是调用的,而不是派生的
- c++17在编译时将带有已删除复制构造函数的类添加到std::vector
- 从作为模板参数传递给构造函数的类继承,或者从它们继承
- 继承的构造函数忽略类内初始化
- 模板和隐式构造函数的类定义之外的友元声明
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- 为什么具有私有构造函数的类不阻止从此类继承?如何控制哪些类可以从某个基继承?
- 具有多个非默认构造函数基的Singleton派生类
- 调用基默认构造函数模板类
- 当基类未指定构造函数时,如何使用仅具有带参数的构造函数的类派生基类?
- 构造所有基类不需要默认生成的构造函数