[問題] 建構子與解構子問題?

看板C_and_CPP作者 (O_Q)時間12年前 (2012/02/28 16:59), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
#include <iostream> using namespace std; class A { public: A() { cout << "A::A() \n";} ~A() { cout << "A::~A() \n";} }; class B : public A { public: B() { cout << "B::B() \n";} ~B(){ cout << "B::B() \n";} }; int main() { B b; system("PAUSE"); } 我執行結果 A::A() B::B() 但執行結果應為 A::A() B::B() B::~B() A::~A() 我用Dev-C++ 請問哪邊出問題了 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.202.155

02/28 17:02, , 1F
main 結束 (pause 之後)才會解構吧
02/28 17:02, 1F

02/28 17:03, , 2F
所以你看到的時候自然還沒有 B::~B() 和 A::~A()
02/28 17:03, 2F

02/28 17:03, , 3F
試著在命令列執行執行檔吧
02/28 17:03, 3F

02/28 17:03, , 4F
然後, ~B() 裡面你打錯了... XD
02/28 17:03, 4F

02/28 17:47, , 5F
熊熊看還看不出來發生什麼事XD
02/28 17:47, 5F

02/28 21:24, , 6F
1. 改成 {B b;} // 補個括號
02/28 21:24, 6F

02/28 21:25, , 7F
2. 沒有看到你的 cout << "B::~B() \n"; 說
02/28 21:25, 7F
文章代碼(AID): #1FJ9Tov1 (C_and_CPP)