1. 程式人生 > 其它 >c++建構函式和解構函式反彙編

c++建構函式和解構函式反彙編

#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建立的物件 都在堆上

從此山高路遠,縱馬揚鞭。願往後旅途,三冬暖,春不寒,天黑有燈,下雨有傘。此生盡興,不負勇往。