这种实现的第一种实现是使用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;
}
... {
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;
}
... {
public:
~CPrint()
...{
cout << "黄河入海流, " << "欲穷千里目, " << "更上一层楼. ";
}
} ;
CPrint g_print;
int main( void )
... {
cout << "白日依山尽, ";
return 0;
}