#include <iostream>
#include <cstring>
using namespace std;
class Person{
char m_strName[10]; //姓名
int m_nAge; //年龄
public:
Person(char *name,int age){
strcpy(m_strName,name);
m_nAge = age;
cout << "constructor of person" << m_strName << endl;
}
~Person() {cout << "deconstrucor of person" << m_strName << endl;}
};
class Employee:public Person{
char m_strDept[20];
Person Wang;
public:
Employee(char *name, int age, char* dept, char *name1, int age1)
:Person(name, age), Wang(name1,age1)
{
strcpy(m_strDept, dept);
cout << "constructor of Employee" << endl;
}
~Employee() {cout << "deconstrucor of Employee" << endl;}
};
int main(){
Employee emp("Abel",40,"human_resource", "Alan",36);
system("pause");
return 0;
}
结果
分析
构造函数执行顺序为祖先(Person Abel)客人(Person Alan)最后自己Employee。这里Wang是Person类的一个对象,被派生类Employee所拥有。
析构函数执行顺序恰好和构造函数相反
注:调用Person类构造函数并不是创建基类对象,而是对Employee对象部分继承的成员变量进行初始化