首页 > 解决方案 > 继承类中的构造函数?

问题描述

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

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

1) 构造基类成员

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

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

标签: c++classinheritance

解决方案


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

  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)

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


推荐阅读