用过Dev-C++的人, 一定知道要停止输出屏幕, 必须在main体内加上类似system("pause")或者cin.get()这样的语句。下面我们利用一些C++的特性以及标准库函数,示范如何把system("pause")隐藏起来。
/* Pause.h */
#include <iostream>
#include <cstdlib>
#ifndef __CPAUSE__
#define __CPAUSE__
class CPause
{
static void system(){
std::system("pause");}
public:
CPause(){
std::atexit(&CPause::system); }
}m_pause_;
#endif //__CPAUSE__
其中atexit是指定一个函数在程序结束时运行, m_pause_是CPause的实例。它的构造函数会在main()主函数之前执行, 其实也就是利用全局对象的这个特性。
运行例子:
/* example.cpp */
#include <iostream>
#include "pause.h" // 现在只要定义pause头文件, 要可以把输出屏停住了.
using namespace std;
int main()
{
cout << "Hello, World" << endl;
return (0);
}