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

1、构造函数的调用顺序 

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

2、析构函数的调用顺序

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

3、特例 

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

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

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

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

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

#include "stdafx.h"
#include <iostream>
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");
}

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

发布了38 篇原创文章 · 获赞 7 · 访问量 6484
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览