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!)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部