我是一个为学校编写代码的新手程序员。当执行下面的代码时,会输出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