如何为此正确编写析构函数

Che*_*ebz 1 c++ destructor c++11

我有一个简单的结构,朋友会被分配new,所以显然我需要delete这样.但是,通过姓名和电子邮件,我不太确定.

struct Member
{
    char * name;
    char * email;
    LinkedList<Member> * friends;

    Member() : name(nullptr), email(nullptr), friends(nullptr)
    {
    }

    ~Member()
    {
        if (friends)
            delete friends;
    }
};
Run Code Online (Sandbox Code Playgroud)

如果,例如,我有什么

Member m;
m.name = "John Doe";
m.email = "johnDoe0@email.com";
Run Code Online (Sandbox Code Playgroud)

我还需要delete姓名/电子邮件吗?

Som*_*ude 7

经验法则是:只有delete你new(以及delete[]你new[]).

在这种情况下,你不为字符指针分配内存,而是让它们指向不变的字符数组,所以你当然不应该delete这样.

另请注意,delete在a 上执行此操作是有效的nullptr.