虚函数析构函数调用顺序

Posted wrencai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚函数析构函数调用顺序相关的知识,希望对你有一定的参考价值。

析构函数参考:
http://blog.csdn.net/zengchen__acmer/article/details/22592195?utm_source=tuicool
构造函数参考:
http://www.cnblogs.com/nliao/archive/2012/02/05/2339175.html

C++构造函数调用顺序:

1、创建派生类的对象,基类的构造函数函数优先被调用(也优先于派生类里的成员类,多继承时,按照派生表的顺序依次调用);

2、如果类里面有成员类,成员类的构造函数优先被调用(按照声明的顺序调用);

3、派生类构造函数。

C++析构函数主要遵从一下四点规则:

1、首先调用派生类的析构函数(清理派生类的新增成员);

2、如果派生类中有子对象 , 则再调用派生类中子对象的析构函数 , 调用顺序是:在派生类中,先定义后调用。(清理派生类新增的成员对象);

3、再调用普通基类的析构函数(清理从基类继承来的新增成员);

4、最后调用虚基类的析构函数。

以上是关于虚函数析构函数调用顺序的主要内容,如果未能解决你的问题,请参考以下文章

构造函数和析构函数

如何能避免在调用子类对象的虚函数时调用父类的虚函数呢?

static函数如何调用虚函数

绝不在构造函数和析构函数中调用虚函数

绝不在构造函数和析构函数中调用虚函数

虚析构函数与纯虚函数