这种实现的第一种实现是使用atexit()函数。 该函数是C运行时函数,在main()函数退出之后会执行此函数。因此,我们只要在这里设置一个钩子,让程序退出时执行一段我们的代码,就可以达到此目的。注意,钩子函数不能有任何参数,也不能返回任何值。
完整的实现如下:
void at_exit_p( void )
...{
cout << "黄河入海流, " << "欲穷千里目, " << "更上一层楼. ";
}
// can also use "_onexit"
int r = atexit( at_exit_p );
int main(void)
...{
cout << "白日依山尽, ";
return 0;
}第二种实现是借助自定义类全局变量销毁的机制。对于自定义类,如果我们在程序中使用该类的全局变量,那么在程序退出时,该类的析构函数会被调用。我们只要在该析构函数内添加需要打印的诗句,就可以达到题目的要求。
完整的代码如下:
class CPrint
...{
public:
~CPrint()
...{
cout << "黄河入海流, " << "欲穷千里目, " << "更上一层楼. ";
}
};
CPrint g_print;
int main(void)
...{
cout << "白日依山尽, ";
return 0;
}
本文介绍两种在C++程序退出时执行特定代码的方法:一是利用atexit()函数注册钩子;二是通过自定义类的全局实例,在程序结束时自动调用其析构函数来实现。

被折叠的 条评论
为什么被折叠?



