取消初始化对象意味着什么?

时间:2013-04-15 02:13:24

标签: c++

在C ++中调用一个特定对象的析构函数,析构函数首先取消对象的初始化,然后删除该对象。

我没有得到的是_de_initialize一个对象意味着什么。它是什么意思,会发生什么?

3 个答案:

答案 0 :(得分:3)

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

或许您正在制作代表Windows HANDLE或UNIX文件描述符的内容。删除对象后,您可能希望关闭该句柄或文件描述符。再一次,析构函数就是这样做的地方。

通常,析构函数是释放与该对象关联的资源的地方,无论这些资源是什么。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我认为混淆可能是由于某些库中有一个由{1}}强制执行的方法,在处理完所有动态数据和可能的连接后,通常在构造函数的最后一行调用。{ / p>

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

如果需要去初始化,最好以相反的顺序进行。我的意思是,如果初始化是构造函数的最后一行,它很可能也应该是析构函数的第一行:

initConnections()