[問題] 如何檢查解構子的內容

看板C_and_CPP作者 (Lucius)時間15年前 (2010/06/01 12:46), 編輯推噓4(407)
留言11則, 5人參與, 最新討論串1/1
大家好, 又來向大家請教 假設我宣告類別如下 class test{ public: class(){ cout<<"constructor acted"<<endl; } ~class(){ cout<<"destructor acted"<<endl; } }; 我想要在主程式中檢查解構子是否有執行 該用怎麼樣的中斷法才能看到"destructor acted"訊息? 我一般將system("pause")與return 放在程式的尾端 可是程式都只執行完建構子就暫停了 是否有其他的中斷法可以用來檢視解構子的訊息呢 有勞各位幫我解答, 十分感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.128.66

06/01 12:56, , 1F
你的ctor與dtor的name都寫錯了, 是test不是class....
06/01 12:56, 1F

06/01 12:56, , 2F
如果你是用 test t; 這樣的方式測試, 給它加個{}像
06/01 12:56, 2F

06/01 12:57, , 3F
main{ { test t; } return 0; } 這樣就行了....
06/01 12:57, 3F

06/01 12:57, , 4F
因為你單純宣告local, 等變數遇到{}結束才會呼叫到dtor
06/01 12:57, 4F

06/01 12:58, , 5F
不然就是自己new/delete, 就可以抓到更直接的時間點@_@"
06/01 12:58, 5F

06/01 12:58, , 6F
在主程式加上{}
06/01 12:58, 6F

06/01 12:59, , 7F
不然就是用atexit()來中斷
06/01 12:59, 7F

06/01 13:02, , 8F
你應該是建構子的名字用錯了吧,名稱要跟CLASS相同
06/01 13:02, 8F

06/01 13:04, , 9F
但是不能delete local的位址,雖然能執行解構子
06/01 13:04, 9F

06/01 13:27, , 10F
多加大括號把物件定義在裡面你就看得到訊息了
06/01 13:27, 10F

06/01 13:54, , 11F
命名都打錯, 讓各位見笑了:) 另外感謝解答, 明白了!
06/01 13:54, 11F
文章代碼(AID): #1C192XU6 (C_and_CPP)