#include <iostream>
using namespace std;
class Number {
float* val;
void operator = (const Number&); // не помогает
public:
Number(float arg){
val = new float(arg);
}
float& get(){
return *val;
}
~Number(){
delete val;
}
};
int main(int argc, char *argv[]){
Number* a = new Number(1);
Number* b = new Number(2);
a = b; // утечка памяти
// a будет указывать на b
// теперь мы не знаем ссылку на область a
cout << a->get() << endl;
cout << b->get() << endl;
cout << a->get() / b->get() << endl;
delete a;
delete b; // invalid pointer, программа падает
return 0;
}
Как сделать так, чтобы нельзя было присвоить a и b. Перегрузка присваивания в private-секции не помогает, она сработает только, когда мы по значению будем присваивать *a = *b и тогда компилятор предупредит о такой ошибке.