你能告诉我为什么不添加" getch()"或"系统("暂停")",结果就在第二个代码显示的第一个代码中,缺少部分析构函数中的代码
#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;
}
在第一个代码中,结果是 &#34; chuc mung ban nam moi an khang thinh vuong&#34;
在第二个代码中,结果是 &#34; chuc mung ban nam moi an khang thinh vuong Nam Tan Ty&#34; 在这种情况下,控制台在显示结果后不会暂停。
答案 0 :(得分:3)
你能告诉我为什么不添加&#34; getch()&#34;或者&#34;系统(&#34;暂停&#34;)&#34;,结果就在第一个代码中
object
超出范围,并在main()
退出时被破坏。该代码示例中没有任何内容阻止main()
退出,因此object
将被立即销毁。
否则在第二个代码显示中缺少部分析构函数中的代码
getch
/ pause
推迟main()
退出,暂停时object
仍在范围内,因此未被破坏爱好。
如果您希望在暂停代码之前销毁object
,可以将object
放入另一个范围,以便之前被破坏:
int main()
{
{
chucmung1 object;
}
system("pause > NULL");
}
答案 1 :(得分:1)
在两种情况下输出都是相同的,尽管在第一种情况下暂停后运行析构函数,只要 不按control-C或控制中断就可以退出暂停 ...将在析构函数有机会运行之前终止您的程序。