的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,因爲它訪問賦值返回的表達式。 –