我對前綴運算符重載有一個疑問。爲什麼我們必須從一元前綴運算符重載返回const引用
我的示例程序:
class ABC {
int i;
public:
const ABC& operator++() { i=i+1; return *this;}
};
int main() {
ABC ob ; //let value of i =5;
++ob; // value of i will be 6
return 0;
}
但調用++ob
APMK ++ob
轉化爲ob.operator++()
時,我可以通過重載像下面
void operator++() { i=i+1;}
這給了我同樣的結果做同樣的事情。
我的疑問是什麼發生在返回值。該編譯器產生類似的代碼:提前
你不知道。但有人可能會做'++(++ ob)'或類似的。或'ob2 = ++ ob;' – immibis
前綴增量應該通常返回一個非常量左值引用。 – NathanOliver