gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:01 26 4
gpt4 key购买 nike

我有一个类,它有一个结构,其中一个成员是指针。

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 超出范围时如何删除结构组中的两个空指针?

最佳答案

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

关于c++ - 具有指针结构的类是否需要析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6797813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com