c – 具有指针结构的类是否需要析构函数

我有一个类,它有一个结构,指针作为其成员之一.

struct group {
   void *v1, 
   void *v2;
};


class A {
  A (group& handle) 
  : m_handle(handle)
 private :
   group m_handle;
};

A类中没有指针成员.当A中没有定义析构函数时,我没有看到任何问题(例如内存泄漏).我已经知道当对象A超出范围时,A的析构函数被调用,如果有的话是A中的成员类,然后调用它们的析构函数,依此类推.那么,成员结构如上面的m_handle会发生什么 – 它们是否具有与析构函数类似的东西?当对象A超出范围时,结构组中的两个void指针是如何被删除的?

最佳答案
是的,如果v1和v2在程序的其他部分没有被释放,则可能会泄露它们.因此,在A的析构函数中,您可以删除v1和v2(如果它适合),或者您可以只将析构函数添加到组中(在c中,结构与默认可见性之外的类完全相同 – 默认情况下,内容是公共的而不是私人)并在那里删除它们.当然,这取决于适当性(可能分配了一些其他东西并拥有v1和v2).

转载注明原文:c – 具有指针结构的类是否需要析构函数 - 代码日志