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

cpp*_*der 5 c++ pointers destructor structure

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

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


class A {
  A (group& handle) 
  : m_handle(handle)
 private :
   group m_handle;
};
Run Code Online (Sandbox Code Playgroud)

类 A 中没有指针成员。当 A 中没有定义析构函数时,我没有看到任何问题(例如内存泄漏)。我了解到,当对象 A 超出范围时,将调用 A 的析构函数,如果存在是 A 中存在的成员类,然后调用它们的析构函数,依此类推。那么,上面的 m_handle 这样的成员结构会发生什么 - 它们是否有类似于析构函数的东西,以及当对象 A 超出范围时,结构组中的两个 void 指针如何被删除?

Col*_*lin 4

是的,如果 v1 和 v2 没有在程序的其他部分中释放,它们可能会泄漏。因此,在 A 的析构函数中,您可以删除 v1 和 v2 (如果合适的话),或者您可以只添加一个析构函数到组(在 C++ 中,结构与类完全相同,除了默认可见性之外 - 默认情况下,东西是公共的)而不是私有的)并在那里删除它们。当然,这取决于适当性(也许分配了其他东西并拥有 v1 和 v2)。