op8278
2015-05-11 09:40
采纳率: 100%
浏览 1.9k

求解C++继承类构造函数的简单问题(类内声明,类外定义)

class person
{
public:
person(int num1, string name1);
..
private:
int num;
string name;
};
person::person(int num1, string name1)
{
num = num1;
name = name1;
}

class student :public person
{
public:
student(int num1, string name1, int cnum1, float score1) :person(num1, name1);
...
private:
int cnum;
float score;
};

student::student(int num1, string name1, int cnum1, float score1) :person(num1, name1)
{
cnum = cnum1;
score = score1;
}

继承类的构造函数,在类内定义,类外声明,这种方式为什么不可以编译?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • echoallen 2015-05-11 12:50
    已采纳

    声明的时候不能调用基类的构造函数,定义的时候才可以,因此,建议改为:
    class person
    {
    public:
    person(int num1, string name1);
    ..
    private:
    int num;
    string name;
    };
    person::person(int num1, string name1)
    {
    num = num1;
    name = name1;
    }
    class student :public person
    {
    public:
    student(int num1, string name1, int cnum1, float score1) ;
    ...
    private:
    int cnum;
    float score;
    };
    student::student(int num1, string name1, int cnum1, float score1) :person(num1, name1)
    {
    cnum = cnum1;
    score = score1;
    }

    打赏 评论
  • 「已注销」 2015-05-11 13:57

    首先你使用的是什么IDE(包含什么编译器)。

    打赏 评论
  • LemonSmile_ 2015-05-11 14:02

    1.你应该是在类内声明,类外定义
    2.构造函数声明时不能调用基类的构造函数,不注明继承的构造函数
    3.构造函数定义时才调用基类构造函数,注明继承的构造函数
    代码同上一楼

    打赏 评论

相关推荐 更多相似问题