MWE являетсяПереприсвоить значение не работает в операторе = перегрузка
#include <iostream>
using namespace std;
class N {
public:
float x;
N() { x = 0.0; }
N(float a) { x = a; }
//N(N &n) { x = n.x; }
N &operator=(float f) { cout << "########";return *new N(f); }
};
int main() {
N a;
a = 3.0;
cout << a.x;
return 0;
}
Что я ожидаю: она печатает 3, но на самом деле выводит 0. Кажется значение не изменилось.
Тогда я изменить его в
x = f; return *this;
Он работал, почему?
Если вы читаете, что 'operator =' должен возвращать ссылку на новый объект, прочитайте что-нибудь еще. – user463035818
В качестве оценки задания возвращается '* new N (f)'. 'cout << (a = 0.3) .x' возвращает 3.0 при обращении к выражению, возвращаемому назначением. –