在 C++ 中,为特定对象调用析构函数,析构函数首先取消初始化该对象,然后删除该对象。
我不明白 _de_initialize 对象的含义。这是什么意思,会发生什么?
想象一下你正在重写std::string
。它正在管理一个char
动态分配的数组。当字符串对象被删除时,您希望char
数组也被释放。析构函数就是这样做的地方。
或者,您可能正在制作一些东西来表示 WindowsHANDLE
或 UNIX 文件描述符。当您的对象被删除时,您可能想要关闭该句柄或文件描述符。同样,析构函数是这样做的地方。
通常,析构函数是释放与该对象关联的资源的地方,无论这些资源可能是什么。
标准中从未提及去初始化这个词。至于这意味着什么,这意味着该对象释放任何文件句柄,释放资源等。
我认为混淆可能是由于一些库具有init()
由 API 强制执行的方法,通常在构造函数的最后一行调用,在处理所有动态数据和可能的连接之后。
IMO,这只是对象构造的一部分,该init()
方法主要是一种清理代码的方法,因为没有人喜欢构造函数的代码墙。我经常创建initGUI()
和initConnections()
保持构造函数清洁的方法。
如果需要取消初始化,最好以相反的顺序进行。我的意思是,如果初始化是构造函数的最后一行,它很可能也应该是析构函数的第一行:
Instantiation
Constructor
Initialization
Usage
De-initialization
Destructor
Deletion