派生类并不继承基类的构造和析构函数,只继承成员变量和普通成员方法。派生类的构造函数一定会调用基类的构造函数,析构也一样。
//基类 person.cpp
person::person(){
cout << "person construct" << endl;
}
person::~person(){
cout << "person deconstruct" << endl;
}
//派生类 man.hpp
class man:public person
{
man();
~man();
}
// 派生类 man.cpp
man::man(){
cout << "man construct" << endl;
}
man::~man(){
cout << "man deconstruct" << endl;
}
/**** 执行结果 ****/
/*
* 当派生类构建和析构时
* person construct
* man construct
* person deconstruct
* man deconstruct
*/
通过代码执行结果看到的现象总结:派生类的构造函数执行之前,会先调用积累的构造函数,然后再调用自己的构造函数。而在派生类的析构函数之后,会先执行自己的析构函数,再执行基类的析构函数。
派生类的任意构造函数,可以显式指定调用基类的任意一个构造函数,通过参数匹配的方式,如下:
man::man(string myname, int myage, int mylen):person(myname, myage)
{
length = mylen;
cout << "man(string myname, int myage, int mylen)" << endl;
}