派生类构造与析构函数
- 基类的构造函数与析构函数不能被继承
- 派生类构造函数的一般形式为
派生类名::派生类名(参数总表): 基类名1(参数表1),…,基类名n(参数表n), 内嵌对象名1(对象参数表1),…,内嵌对象名m(对象参数表m)
{
派生类新增加成员的初始化;
}
基类Person类的定义
#include<iostream>
#include<string.h>
using namespace std;
class Person
{
char Name[10]; //姓名
int Age; //年龄
public:
Person(char* name,int age) // 构造函数
{
strcpy(Name, name);
Age = age;
cout<<"constructor of person"<<Name<<endl;
}
~Person() // 析构函数
{cout<<"deconstrutor of person"<<Name<<endl;}
};
派生类构造函数与析构函数测试
class Employee : public Person
{
char Dept[20];
Person Leader;
public:
Employee(char *name, int age, char *dept, char *name1, int age1): Person(name, age) , Leader(name1, age1)
{
strcpy(Dept, dept);
cout<<"constructor of Employee"<<endl;
}
~Employee() { cout<<"deconstrucor of Employee"<<endl; }
};
int main()
{
Employee emp("张弓长", 40, "人事处", "李木子", 36);
return 0;
}
派生类构造函数的执行次序
构造函数
- 首先,调用基类构造函数,调用顺序按照它们被继承时声明的基类名顺序执行
- 其次,调用内嵌对象构造函数,调用次序按各个对象在派生类内声明的顺序
- 最后,执行派生类构造函数体中的内容
析构函数
派生类析构函数执行过程恰与构造函数执行过程相反。
- 首先,执行派生类析构函数
- 然后,执行内嵌对象的析构函数
- 最后,执行基类析构函数