[英]C++ Destructor Exception
我是一個新手程序員,正在為學校編寫一些代碼。 當執行以下代碼時,將輸出單詞BAD。 我不明白為什么終止WriteLettersObj對象時不輸出析構函數中的字母C。
// Lab 1
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class WriteLetters {
public:
WriteLetters();
void writeOneLetter();
~WriteLetters();
} WriteLettersObj;
WriteLetters::WriteLetters() {
cout << "B";
}
void WriteLetters::writeOneLetter() {
cout << "A";
}
WriteLetters::~WriteLetters() {
cout << "C" << endl;
}
int main() {
WriteLettersObj.writeOneLetter();
cout << "D";
getch();
return 0;
}
您正在將iostream與非ANSI conio.h混合。
進行以下更改:
// getch();
cin.get();
嘿,請問,C出現了。 至少在OS X上可以。 還有Ubuntu。
您的程序一直處於運行狀態,直到您通過return 0
指令退出main()
為止。 由於WriteLettersObj
是全局變量,因此它將在main()
開始之前進行構造,並在main()
完成之后而不是在getch()
之后進行銷毀。
要查看輸出結果,請將getch()
放在析構函數的末尾。
我試過在Linux和Mac上運行代碼而沒有 getch,它運行得很好。 @iammilind是正確的,您應該在析構函數中移動getch。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.