簡體   English   中英

關於重載賦值運算符的困惑

[英]Confusion about overloading assignment operator

假設有一個稱為Vector的類,我想為其重載賦值運算符,使其能夠像這樣工作:a = b = c;(a,b,v是Vector類的對象)

但是有一件事使我感到困惑。 假設有兩個原型:

Vector & operator=(const Vector & v);
const Vector & operator=(const Vector & v);

兩者在'a = b = c'的情況下均起作用。 那么,哪個更好或更合適?

對於初學者,使用std::vector命名類“ Vector”可能會導致頻繁的混淆和混淆。 您應該選擇一個更好的名稱。 不幸的是,現在也采用了“數組”。

第一個是標准賦值運算符。 當然,賦值運算符僅是為可變類實例定義的,因此它應返回對可變類實例的引用。

有趣的是,就我個人而言,我會選擇第一個,原因是第二個在結果上強制保持一致性。 這可能是您不想要的,也可以根據需要在外部通過使用const等從外部函數返回來強制實施constness。至少您可以手動修改矢量分量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM