Die MWEUmhängen Wert nicht in Bediener arbeiten = Überlastung
#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;
}
ist, was ich erwarte, ist: es 3 druckt, aber er druckt tatsächlich 0. Der Wert scheint nicht zu ändern.
Dann wechsle ich es in
x = f; return *this;
Es funktionierte, warum?
Wenn Sie lesen, dass 'operator =' den Verweis auf ein 'neues' Objekt zurückgeben soll, lesen Sie bitte etwas anderes – user463035818
Das' * new N (f) 'wird als Auswertung der Zuweisung zurückgegeben. 'cout << (a = 0.3) .x' gibt 3.0 zurück, wenn auf den von der Zuweisung zurückgegebenen Ausdruck zugegriffen wird. –