【问题标题】:c++ delete statement for pointer of pointers [duplicate]指针指针的c ++删除语句[重复]
【发布时间】:2016-09-23 23:09:05
【问题描述】:

假设我有一些课程

class word{
public:
    string term;
    word(){}
    word(string s){term = s;}
};

class cont{
public:
    word** terms;
    cont(){};
    cont(int n){terms = new word*[n];}
};

假设现在我像这样初始化一个 cont 及其属性项

cont c(5);
c.terms[0] = new word("a");
c.terms[1] = new word("b");
c.terms[2] = new word("c");

我应该如何删除这个数组的元素?逐个?一次全部?我不明白 delete/delete[] 语法如何用于指针指针。

【问题讨论】:

  • 您根本不应该使用原始指针。除此之外,为每个new 应用一个delete 保持平衡,new[]delete[] 相同。
  • “你根本不应该使用原始指针”是不是因为像 arr[i] 这样的东西比 *(arr + i) 更容易输入和理解?

标签: c++ pointers


【解决方案1】:

先删除对象:

for (int i = 0; i < n; ++i) {
    delete c.terms[i];
}

最后删除数组:

delete[] c.terms;

但是,是的,这肯定是一个非常基本的问题,已经被多次提出和阐述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 2014-09-28
    • 2011-12-21
    • 2017-05-03
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多