我可以在 C++ 的结构体中添加析构函数吗

问题描述 投票:0回答:2

我有一个带有指针的结构。它始终是动态分配的。因此,每当像这样创建对象时,我总是需要释放指针。

A obj;
obj->nums = new int(5);
delete obj->num;


struct A
{
    int *num;
    char c;
    int val;
    
};

我可以在 A 内部有一个析构函数来管理指针变量的清理吗?即使我没有构造函数,我也可以拥有析构函数吗?所以我的新代码看起来像:

struct A
{
    int *num;
    char c;
    int val;
    ~A()
    {
       delete num;
    }
    
}A;

感谢您提前的帮助。

c++ c c++14
2个回答
0
投票

是的,你可以做到。 但为什么不在构造函数中动态分配内存呢!这样构造器就有了对称美。


0
投票

是的。 C++ 中的结构 一个类,但具有默认的公共访问权限和默认的公共继承。因此,结构体可以有构造函数、析构函数、成员函数等。

© www.soinside.com 2019 - 2024. All rights reserved.