你能告诉我为什么我不添加"getch()"或"system("pause")"吗,结果在第一个代码中是正确的,否则在第二个代码中显示缺少部分析构函数中的代码
#include "iostream.h"
class chucmung1
{
public :
chucmung1()
{
cout <<"chuc mung ban nam moi an khang thinh vuong\n";
}
~chucmung1()
{
cout <<"Nam Tan Ty\n";
}
};
// the first code
int main()
{
chucmung1 object;
system("pause > NULL");
}
// the second code
int main()
{
chucmung1 object;
}
在第一个代码中,结果是 “chuc mung ban nam moi an khang thinh vuong”
在第二个代码中,结果是 "chuc mung ban nam moi an khang thinh vuong 南新泰” 在这种情况下,控制台不会在显示结果后暂停。
最佳答案
Can you tell why i don't add "getch()" or "system("pause")", the result is right in the first code
object
超出范围并在 main()
退出时销毁。该代码示例中没有任何内容阻止 main()
退出,因此 object
被立即销毁。
else in the second code display to lack code in part destructor
getch
/pause
正在延迟 main()
退出,并且 object
仍在范围内在暂停的时候,所以它还没有被销毁。
如果你想在暂停代码之前销毁object
,你可以将object
放入另一个作用域,这样它就可以更早地被销毁:
int main()
{
{
chucmung1 object;
}
system("pause > NULL");
}
关于c++ - C++中的构造函数和析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131100/