我将问题简化为以下示例代码:

class pokemon{
    public:
        pokemon(int n);
};

class MewTwo : public pokemon {
    public:
        MewTwo(int n);
};

MewTwo::MewTwo(int n) {}

产生错误:



认为正在发生的事情是,当我尝试编写MewTwo构造函数(不存在)时,会调用pokemon的默认构造函数。我是C++的新手,所以我只是在猜测。有任何想法吗?

约束:修复程序无法修改类或将公共(public)成员添加到类中。

最佳答案

实际上,您正在寻找的是成员初始化列表。将继承的类构造函数更改为以下内容:

class MewTwo : public pokemon {
    public:
        MewTwo(int n) : pokemon(n) {}
};

您在确定正在发生的事情上是正确的。基本上,当您创建继承的类时,首先要创建基类,但是您不能这样做,因为没有定义默认的构造函数。成员初始化列表可帮助您解决:)

退房:http://www.cprogramming.com/tutorial/initialization-lists-c++.html以获得更多示例!

关于c++ - 继承类的默认构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4352169/

10-10 02:57