Cpp 对象模型探索 / 父类和子类调用构造函数和析构函数的顺序
2018-03-19 创建人:Ruo_Xiao
邮箱:xclsoftware@163.com
一、建立对象过程
father → son
栗子:
class Parent
{
public:Parent() { i_parent_ = 0; }~Parent(){i_parent_ = 0;}
public:int i_parent_;
};class Son : public Parent
{
public:Son(){ i_son_ = 0; }~Son(){i_son_ = 0;}
public:int i_son_;
};int main()
{Son sn;return 0;
}
转入汇编代码,如下:

通过代码可以知道,首先调用的是 Son 类构造函数。进入,如下图所示:

通过代码可以知道,编译器在 Son 类的构造函数开头插入了 Parent 类的构造函数,从而完成对 Parent 类构造函数的调用。
再进入代码,如下图所示:

经过上述过程之后,从而完成子类构造函数调用父类构造函数。
二、销毁对象过程
子类 → 父类
转入汇编代码,如下:

由上图可知,直接调用了 Son 类的析构函数。
进入,汇编代码如下:

由上图可知,是先调用子类的析构函数之后再调用父类的析构函数。
(SAW:Game Over!)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
