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

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

声明的时候不能调用基类的构造函数,定义的时候才可以,因此,建议改为:
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;
}

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

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