首页 > 编程语言 > 详细

c++构造函数和析构函数反汇编

时间:2021-07-18 14:20:51      阅读:35      评论:0      收藏:0      [点我收藏+]
#include <iostream>

class MyClass
{
public:

    MyClass();
    ~MyClass();
    int m;
    char n;
    int getn(MyClass test)
    {
        return test.m + test.n;
    }
    int getm()
    {
        return m;
    }
private:

};
MyClass::MyClass()
{
    m = 10;
    n = 9;    
}

MyClass::~MyClass()
{
}


 int main()
{
     MyClass * test=new MyClass;
     test->m = 10;
     test->n = 9;

}

测试用例

技术分享图片

 

 je 判断是不是等于0 相当于在判断 创建的类对象是不是成功 等于失败 就在堆内申请内存 失败直接结束类创建

  跳过执行构造函数的call   

00F71A9A  mov         dword ptr [ebp+FFFFFF0Ch],0   在je 失败直接对  栈里 指针赋0了

浅拷贝和深拷贝问题记录在之前文章

对于构造函数的出现 可以猜测自己或者父类 有虚函数存在

技术分享图片

 

 先判断是否为0 如果是0就不用清空了 如果是回去找 析构函数的表 去调用  new创建的对象 都在堆上 

技术分享图片

 

c++构造函数和析构函数反汇编

原文:https://www.cnblogs.com/feizianquan/p/15026339.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!