当子类继承父类时,实例化子类对象,构造函数的执行顺序是从父类的构造函数到子类的构造函数依次往下,接下来继续执行main函数,在main函数的最后一句执行完毕时,开始执行析构函数,顺序是从子类到父类依次往下。
#include<iostream>
#include<string>
//构造器与析构器
class BaseClass
{
public:
BaseClass();
~BaseClass();
void dosomething();
};
class SubClass : public BaseClass
{
public:
SubClass();
~SubClass();
};
BaseClass::BaseClass()
{
std::cout << "进入基类构造器——\n" ;
std::cout << "在基类构造器里面实现功能——\n" ;
}
BaseClass::~BaseClass()
{
std::cout << "进入基类析构器——\n" ;
std::cout << "在基类析构器里面实现某些功能——\n";
}
void BaseClass::dosomething()
{
std::cout << "实现某些功能 \n";
}
SubClass::SubClass()
{
std::cout << "进入子类构造器——\n";
std::cout << "在子类构造器里面实现一些功能——\n";
}
SubClass::~SubClass()
{
std::cout << "进入子类析构器——\n";
std::cout << "在子类析构器里面实现一些功能——\n";
}
int main()
{
SubClass subclass;
subclass.dosomething();
std::cout << "main()函数结束!" << std::endl;
return 0;
}