在C ++中调用一个特定对象的析构函数,析构函数首先取消对象的初始化,然后删除该对象。
我没有得到的是_de_initialize一个对象意味着什么。它是什么意思,会发生什么?
答案 0 :(得分:3)
想象一下,你正在重写std::string
。它正在管理动态分配的char
数组。删除字符串对象时,您还希望释放char
数组。析构函数就是这样做的地方。
或许您正在制作代表Windows HANDLE
或UNIX文件描述符的内容。删除对象后,您可能希望关闭该句柄或文件描述符。再一次,析构函数就是这样做的地方。
通常,析构函数是释放与该对象关联的资源的地方,无论这些资源是什么。
答案 1 :(得分:2)
标准中从未提及过去初始化这个词。至于它意味着什么,它意味着该对象释放任何文件句柄,释放资源等等。
答案 2 :(得分:1)
我认为混淆可能是由于某些库中有一个由{1}}强制执行的方法,在处理完所有动态数据和可能的连接后,通常在构造函数的最后一行调用。{ / p>
IMO,这只是对象构造的一部分,init()
方法主要是一种清理代码的方法,因为没有人喜欢构造函数的代码墙。我经常创建init()
和initGUI()
方法来保持构造函数的清洁。
如果需要去初始化,最好以相反的顺序进行。我的意思是,如果初始化是构造函数的最后一行,它很可能也应该是析构函数的第一行:
initConnections()