对对象进行反初始化是什么意思?



在c++中为特定对象调用析构函数时,析构函数首先对该对象进行反初始化,然后删除该对象。

我不明白的是_de_initialize对象是什么意思。这意味着什么,会发生什么?

假设您正在重写std::string。它在管理一个动态分配的char数组。当字符串对象被删除时,您希望char数组也被释放。析构函数就是这样做的地方。

或者您正在制作一些东西来表示Windows HANDLE或UNIX文件描述符。当对象被删除时,您可能希望关闭该句柄或文件描述符。同样,析构函数就是这样做的地方。

一般来说,析构函数是释放与该对象相关的资源的地方,无论这些资源是什么

在标准中从未提到过"去初始化"这个词。至于这意味着什么,它意味着对象释放任何文件句柄,释放资源,等等。

我认为这种混淆可能是由于一些库在API强制执行init()方法,该方法通常在构造函数的最后一行调用,在处理所有动态数据和可能的连接之后。

在我看来,这只是对象构造的一部分,init()方法主要是一种清理代码的方法,因为没有人喜欢构造函数的代码墙。我经常创建initGUI()initConnections()方法来保持构造函数的整洁。

在需要取消初始化的情况下,以相反的顺序执行是一个好主意。我的意思是,如果初始化是构造函数的最后一行,那么它很可能也应该是析构函数的第一行:

Instantiation
   Constructor 
      Initialization
         Usage
      De-initialization
   Destructor
Deletion

最新更新