的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 ='应该返回一个'new'ed对象的引用,请阅读其他内容 – user463035818
* * new N(f)'作为赋值的评估返回。 'cout <<(a = 0.3).x'返回3.0,因为它访问赋值返回的表达式。 –