继承类的默认构造函数

时间:2010-12-04 05:47:55

标签: c++ inheritance default-constructor

我已将问题减少到以下示例代码:

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

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

MewTwo::MewTwo(int n) {}

产生错误:

  

没有匹配的呼叫功能   “小宠物的小宠物::()”

认为正在发生的事情是当我尝试编写不存在的MewTwo构造函数时,会调用pokemon的默认构造函数。我对C ++比较陌生,所以我只想猜测一下。有什么想法吗?

约束:修复无法修改或向类中添加公共成员。

2 个答案:

答案 0 :(得分:13)

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

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

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

查看:http://www.cprogramming.com/tutorial/initialization-lists-c++.html了解更多示例!

答案 1 :(得分:5)

试试这个:

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

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