Skip to main content
 首页 » 编程设计

c++之如何在atexit()中析构实例

2024年06月20日36java哥

我希望始终在程序结束之前调用实例 (proc) 的析构函数,尤其是在return 1之后em> 或 main 中的 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; 
} 

请您参考如下方法:

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

除非@Rob 在下面提到,你在代码中的某个地方调用 exit() ...如果是这样的话,那么你必须分配 Process堆,提供一个 atexit 可以调用的函数,该函数知道该实例,并在那里删除它...