c++建構函式和解構函式反彙編
阿新 • • 發佈:2021-07-18
#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建立的物件 都在堆上