C++:删除公共和私有中的所有声明是否正确?

oli*_*dev 0 c++

我正在学习C++,我不清楚类的析构函数.例如:

class A:
{
  public:
    int valueA;
  private:
    int valueB;
};

A:~A()
{
  delete valueA;
  delete valueB;
}
Run Code Online (Sandbox Code Playgroud)

那么,基本上删除公共和私有中的每个声明是否正确?

unw*_*ind 8

不,你只需要delete使用已经分配的那个new.像ints 这样的简单值类型永远不需要删除.

如果您的类确实包含使用new构造函数或稍后通过其他方法动态分配的数据,则析构函数通常应该取消分配所有数据,无论数据是公共还是私有.

我可能会补充说,公开显示动态分配的指针成员可能不是最好的设计.