派生类从基类继承了非私有成员函数和数据成员,但是在建立派生类的对象时,系统只执行派生类的构造函数,而不会自动执行基类的构造函数,也就是说基类的构造函数是不能继承的!
如果基类的构造函数包含对变量的初始化,那么在建立派生类的对象时,由于没有执行基类的构造函数,因而就会使基类的变量未初始化。所以在设计派生类的构造函数时,不仅要考虑派生类所增加的变量初始化,还应该当考虑基类的变量初始化。
在执行派生类的构造函数时,应当调用基类的构造函数!!
举个例子:就是
#include
#include
#include
class stud
{
protected:
int num;
char name[10];
char sex;
public:
stud(int n,char nam[],char s)
{
num=n;
strcpy(name,nam);
sex=s;
}
~stud()
{
}
void display()
{
cout<<"num:"<
};
class student :public stud
{
int age;
char addr[30];
public:
student(int n,char nam[],char s,int a,char ad[]):stud(n,nam,s)//这里是理解的关键!
{
age=a;
strcpy(addr,ad);
}
~student()
{
}
void show()
{
//display();
cout<<"num:"<
};
int main()
{
student e(10010,"wang",'f',19,"115 beijing road");
student f(10011,"zhang",'m',21,"214,shang b");
e.show();
f.show();
return 0;
}