C++构造函数和析构函数的调用顺序

1、构造函数的调用顺序 

基类构造函数、对象成员构造函数、派生类本身的构造函数  

2、析构函数的调用顺序

派生类本身的析构函数、对象成员析构函数、基类析构函数(与构造顺序正好相反) 

3、特例 

局部对象,在退出程序块时析构

静态对象,在定义所在文件结束时析构

全局对象,在程序结束时析构 

继承对象,先析构派生类,再析构父类 

对象成员,先析构类对象,再析构对象成员

#include "stdafx.h"
#include 
using namespace std;

class  Clock
{
public:
	Clock()
	{
		cout << "clock的构造函数" << ",";
	}
	~Clock()
	{
		cout << "clock的析构函数" << ",";
	}
};

class Date
{
public:
	Date()
	{
		cout << "date的构造函数" << ",";
	}
	~Date()
	{
		cout << "date的析构函数" << ",";
	}
};


void main()
{
    Clock c;
	Date d;
	system("pause");
}

在使用构造函数和析构函数时,需要特别注意对它们的调用时间和调用顺序。在一般情况下,调用析构函数的次序正好与调用构造函数的次序相反:最先被调用的构造函数,其对应的(同一对象中的)析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。
可以简记为:先构造的后析构,后构造的先析构,它相当于一个栈,先进后出

你可能感兴趣的:(自考)