如何在atexit()中破坏实例

mil*_*cek 2 c++

我想在程序结束之前调用实例(proc)的析构函数,特别是在main中返回1或exit()之后.

我发现C++函数atexit(),但它需要指向void函数的指针而没有参数,所以下面的代码无法编译.请问我怎么解决?

我的实例的析构函数需要MySQL连接.

#include <WinSock.h>
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <mysql.h>
#include <string>

// Declarations for Mysql DB

using namespace std;

class Process {
  public:
     ~Process();
};

Process::~Process ()
{
    // Interaction with DB
}

int main(void) 
{
  // Join to DB

  atexit(proc.~Process); // Call desctructor of instance proc before program ends

  Process proc;

  // App code

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Nim*_*Nim 5

proc有自动持续时间,即退出时main,它将被自动销毁(并调用析构函数) - 你不需要atexit业务..

除非@Rob在下面提到,否则你exit()在代码中调用...如果是这种情况,那么你必须Process在堆上分配,提供一个atexit可以调用哪个知道这个实例的函数,并在那里删除它. ..

  • 除非他计划从他的程序的内部调用`exit()`. (2认同)