c++ - 调用父类(super class)构造函数的规则是什么?

标签 c++ inheritance constructor

从子类调用父类(super class)构造函数的C++规则是什么?

例如,我知道在Java中,您必须作为子类构造函数的第一行来执行此操作(如果不这样做,则假定对no-arg super 构造函数进行隐式调用-如果缺少该函数,则会产生编译错误) 。

最佳答案

如果没有参数,则将自动为您调用基类构造函数。如果要使用参数调用父类(super class)构造函数,则必须使用子类的构造函数初始化列表。与Java不同,C++支持多重继承(无论好坏),因此必须使用名称而不是“super()”来引用基类。

class SuperClass
{
    public:

        SuperClass(int foo)
        {
            // do something with foo
        }
};

class SubClass : public SuperClass
{
    public:

        SubClass(int foo, int bar)
        : SuperClass(foo)    // Call the superclass constructor in the subclass' initialization list.
        {
            // do something with bar
        }
};

有关构造函数的初始化列表herehere的更多信息。

关于c++ - 调用父类(super class)构造函数的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60960854/

相关文章:

c++ - g++ ld 找不到 x86_64 架构的 RInside 符号

java - 基本的多态/继承问题

java - 什么是最好的构造函数

java - 有条件地继承类

Java-参数声明

constructor - Swift 类不可构造

c++ - 析构函数的模板特化

c++ - 如何使用第一个、中间和最后一个元素的中位数正确分区?

c++ - 一个函数知道它的参数占用多少内存吗?

python - python 中的父 __unicode__