C++中怎么样可以做到让一个函数最后执行?
下面代码中,怎么才能保证让lastExecute最后执行(在所有析构函数执行完后再执行lastExecute)。非常感谢。
class CAppc++ class
{
public:
~CApp()
{
printf("Deconstruct CApp..\n");
}
};
CApp app1, app2;
void lastExecute()
{
printf("Last execute..\n");
}
int main()
{
return 0;
}
int atexit(void (*function)(void));
//这个接口函数会帮你
class LastExecutor {
public:
static LastExecutor& getInstance();
void addRef() { ++mRefCount; }
void release() { if (--mRefCount == 0) delete this; }
~LastExecutor() { ::lastExecute(); }
protected:
LastExecutor() : mRefCount(0) {}
private:
LastExecutor(const LastExecutor&);
LastExector& operator=(const LastExecutor&);
private:
unsigned mRefCount;
static LastExecutor *mpInstance;
};
LastExecutor *LastExecutor::pInstance = NULL;
LastExector& LastExecutor::getInstance()
{
if (NULL == mpInstance) {
mpInstance = new LastExecutor();
}
return *mpInstance;
}
class App1 {
public:
App1() { LastExecutor::getInstance().addRef(); }
virtual ~App1() { LastExecutor::getInstance().release(); }
};