C++ 返回const對象


——不注意時,重載operator+()會造成一個奇異的屬性:

 net = force1 + force2; // 1: three Vector objects 

然而,還可以這樣用:

 force1 + force2 = net; // 2: dyslectic programming 

 cout<<(force1 + force2 = net).magval()<<endl; // 3: demented programming 

這是不合理的(覆蓋了創建好的臨時對象)但可行的:

  • (2)創建了一個對象和的臨時對象,再用net覆蓋,之后將其丟棄;
  • (3)在(2)的基礎上調用了臨時對象的magval()方法,之后才丟棄臨時對象

並且可能發生如下錯誤:

if (force1 + force2 == net) 誤用為 if (force1 + force2 = net) 

這同樣可能通過編譯

解決由此引發的誤用和濫用的辦法:

將返回類型聲明為const,這樣便不能對臨時對象進行修改,因此force1 + force2 = net的用法將被報錯

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM