我想知道如何编写运算符=
以便释放变量上现有的分配内存。
例如,在下面的代码中,当重新分配x
指针时x = new ClassExample(4)
,旧x->a
内存将被释放。
显然,使用 时new
,运算符=
不适用(仅适用于已经存在的值)。
有什么方法可以做到这一点(分配新内存时释放旧内存)?
#include <iostream>
#include <cstdlib>
class ClassExample {
public:
int* a;
ClassExample& operator= (const ClassExample& rightSide) {
//.....
}
ClassExample(int val) {
a = new int(val);
}
};
int main()
{
ClassExample* x = new ClassExample(2);
x = new ClassExample(4);
return 0;
}