立此存照26[C++]為什麼VS2013不能顯示解構函式中的輸出語句
阿新 • • 發佈:2019-02-04
#include <iostream> using namespace std; class A { public: A() { cout << "A()" << endl; } ~A() { cout << "~A()" << endl; } }; class B : public A { public: B() { cout << "B()" << endl; } ~B() { cout << "~B()" << endl; } }; int main() { A a; B b; system("pause"); return 0; }
執行結果:
我們明明看到命令列都出現:請按任意鍵繼續。。。的提示了,但解構函式的輸出語句還沒有執行!
究其原因就是,此時物件a、b還沒有被釋放,它們只有當執行到return語句時才釋放,而現在才執行到system()語句。
所以我們根本沒機會看不到解構函式的輸出語句被列印!
解決辦法就是,將解構函式的輸出裝置有命令列改為文字檔案,這樣程式執行結束後,就可以看到解構函式中的輸出語句了。
給改寫後的程式碼:
執行結果:#include <iostream> #include <fstream> using namespace std; fstream fout("destructor.txt", ios::app); class A { public: A() { cout << "A()" << endl; } ~A() { fout << "~A()" << endl; } }; class B : public A { public: B() { cout << "B()" << endl; } ~B() { fout << "~B()" << endl; } }; int main() { A a; B b; system("pause"); return 0; }
文字檔案中的內容: