这里介绍两种方法:
1.使用attribute关键字,声明constructor和destructor函数(gcc中,注意:vc中不支持attribute)
2.利用全局对象的构造函数会在main函数之前执行的特点
#include <iostream> using namespace std; //方法1. 使用attribute关键字,声明constructor和destructor函数 __attribute((constructor))void before_main() { printf("%s\n", __FUNCTION__); } __attribute((destructor)) void after_main() { printf("%s\n",__FUNCTION__); } //方法二:全局对象的构造函数会在main函数之前执行 class Test{ public: Test(string s) { str.assign(s); cout << str << ":A构造" <<endl; } ~Test() { cout << str << ":A析构" <<endl; } private: string str; }; Test test_before_main("global"); int main(int argc, char** argv) { cout << "main function." <<endl; return 0; }
编译输出结果: