c++ - 派生类构造函数调用

标签 c++ inheritance constructor derived-class base-class

如果我有一个基类:

class Base{
  ...
};

和派生类

class Derived : public Base{
  ...
}

这个派生类是否总是调用基类的默认构造函数?即不带参数的构造函数?例如,如果我为基类定义一个构造函数:

Base(int newValue);

但我没有定义默认构造函数(无参构造函数):

Base();

(我知道这只是声明,不是定义) 我得到一个错误,直到我定义了不带参数的默认构造函数。这是因为基类的默认构造函数是派生类调用的构造函数吗?

最佳答案

是的,默认情况下,会调用默认构造函数。您可以通过显式调用非默认构造函数来解决此问题:

class Derived : public Base{
    Derived() : Base(5) {}
};

这将调用带参数的基类构造函数,您不再需要在基类中声明默认构造函数。

关于c++ - 派生类构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446176/

相关文章:

java - 将虚拟方法添加到父类(super class)中以便子类可以覆盖它是一种好习惯吗?

java - 为什么Java中可以将父类(super class)初始化为子类?

c++ - 在 C++ 构造函数中使用 new 运算符是否正确?

c# - C# 中是否有带参数约束的泛型构造函数?

c# - 将 Windows 数据类型映射到 .NET

c++ - 我正在尝试编写用于在 C++ 中添加 2 个复数的友元函数

c# - 存在较新版本的先决条件时无法安装

android - 在 C/C++ 中更改 Android 上的 native 线程优先级

C++多态构造函数错误;标识符未定义

c++ - 对象如何成为子对象?