继承类中的构造函数?

constructor in inherited class?

本文关键字:构造函数 继承      更新时间:2023-10-16

我正在学习C++中的类继承,并阅读以下内容:

构造派生类时,构造其基类部分 第一。操作顺序为:

1( 构造基类成员

2( 基类构造函数代码被调用

有人可以解释 1 和 2 之间的区别吗? 如何在不调用基类构造函数的情况下构造基类成员?这不是构造函数的工作吗?

在尝试理解派生类构造之前,您应该了解类构造。类是如何构造的?构造类时,首先构造其数据成员。构造函数中的执行顺序为:

  1. 构造类成员。
  2. 构造函数主体被调用。

如何在不调用构造函数的情况下构造类成员?它们不是,因为这是构造函数工作的一部分。调用构造函数,此时构造函数构造类成员,然后构造函数执行其主体(在你正在阅读的任何内容中称为它的"代码"(。

MyClass::MyClass()   // <-- entry point for the constructor
// <-- construct members
{ /* do stuff */ }   // <-- the body/code

您可以通过初始化列表控制成员构造,也可以回退到成员的默认构造。


准备好继承了吗?唯一的补充是基类被添加到初始化列表的开头。

Derived::Derived()   // <-- entry point for the derived class constructor
// <-- construct base class (see below)
// <-- construct members
{ /* do stuff */ }   // <-- the body/code
Base::Base()         // <-- entry point for the base class constructor
// <-- construct members (a.k.a. step 1)
{ /* do stuff */ }   // <-- the body/code (a.k.a. step 2)

更复杂,但基本上和以前一样。