我是一個爲學校編寫代碼的新手程序員。當執行下面的代碼時,會輸出BAD字。我不明白爲什麼在WriteLettersObj對象終止時不會輸出析構函數中的字母C.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;
}
如果刪除getch()是否打印出BADC?我通過g ++在Unix上運行,刪除了getch()和stdafx/conio.h頭文件,並打印出BADC。 – Suroot 2011-05-11 03:16:48
我試過它沒有getch(),它確實 – 2011-05-11 03:18:19
即使'getch()'也行,唯一的事情是他的屏幕在他看到輸出之前就消失了。請看下面的答案。 – iammilind 2011-05-11 03:19:21