可能经常会遇到这样的情况,想要程序运行完后,窗口继续保留。
VC或VS下常用的方法是在main函数退出前加一句:system(“pause”)这样的语句,但是这种做法有一个问题就是:在这样的情况下,其实程序并没有真正结束。也就是说main()函数并没有执行完。假设要看一下析构函数的自动调用,就看不到了。比如下面的例子
#include<iostream>
#include<cstring>
using namespace std;
class Person{
public:
Person(char* tmp){
cout<<"Construct object"<<tmp<<endl;
pname=new char[strlen(tmp)+1];
if(pname!=0)
strcpy(pname,tmp);
}
~Person(){
cout<<"Delete object"<<pname<<endl;
pname[0]='\0';
delete pname;
}
private:
char * pname;
};
int main(){
Person p1("qqqq");
Person p2("eeee");
return 0;
//system("pause");
}
这个程序运行完之后就会退出,如果想看一下析构函数的自动调用,是无法看到的。
有两种方法:第一种,直接把源文件编译成.exe文件,然后把它拖到cmd窗口中运行,如下图:
第二种方法:在VS中配置项目属性->链接器->系统->子系统设为:控制台(/SUBSYSTEM:CONSOLE),然后用ctrl+F5运行(不调试运行)。如下图: