Мне было интересно, как написать оператор =
, чтобы существующая выделенная память для переменной была освобождена.
Например, в приведенном ниже коде при переназначении указателя 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;
}
ClassExample
вmain
, но и указатель членаa
в классе! Правила, которым вы должны следовать: 1. Не используйте указатели. 2. Если вам нужно использовать указатели, не делайте этого. 3. Если вам все еще приходится использовать указатели, используйте интеллектуальные указатели. - person Some programmer dude   schedule 03.07.2013