我是一名新手程序员,负责学校的一些代码。执行以下代码时,输出单词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;
}
答案 0 :(得分:2)
您正在将iostream与非ANSI conio.h混合使用。
进行此更改:
// getch();
cin.get();
哎呀,C出现了。至少在OS X上它确实如此。和Ubuntu。
答案 1 :(得分:1)
在您使用main()
指令退出return 0
之前,您的计划已有效。由于WriteLettersObj
是一个全局变量,它将在main()
开始之前构建,并在main()
完成之后而不是在getch()
之后被破坏。
要查看输出是否已打印,请将getch()
放在析构函数的末尾。
答案 2 :(得分:0)
我尝试在linux和Mac上运行你的代码没有 getch,它运行得很好。 @iammilind是对的,你应该在析构函数中移动getch。