op8278 2015-05-11 09:40 采纳率: 100%
浏览 1906
已采纳

求解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;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?