【发布时间】:2018-02-17 04:07:07
【问题描述】:
假设我要创建一个具有这种结构的类
class A
{
int a;
B* b;
}
我读到释放解构器中使用的变量是件好事。
~A
{
delete b;
}
但是对于 int、double、原始类型的变量,我该怎么办?最好的方法或好的编程规则是什么?
【问题讨论】:
-
“解除分配原始类型”是什么意思?为什么你认为你需要对它做任何事情?
-
您可以使用smart pointers 而不是手动管理内存。
-
我推荐你关注the rule of zero,这样你就不用手动管理内存了。
-
至于你的问题,你
delete你new,delete[]你new[]。就是这样。在您的示例中,不需要对A::a进行任何操作,因为您没有为它显式分配内存。 -
作为非静态类成员的内置类型(
int、double等)的一般规则是析构函数无需执行任何操作即可释放它们。它们是对象本身的一部分,在对象存在时开始存在,并随着对象不再存在。只有显式管理的资源(例如使用运算符new初始化的指针)需要释放(例如使用运算符delete)。而且,顺便说一句,C++ 中没有解构器这样的东西。
标签: c++