[英]How can i call a operator overloaded member function(or use the operator) from another operator overloading member function in the same class?
[英]Can I only have const overloaded operator member function?
我正在實現一個分數類,並且需要重載算術運算符。 問題是,我只能實現const
版本。
例如,加法:
Fraction operator+( const Fraction& other ) const;
由於非const對象和const Fraction對象都可以調用此函數,因此我仍然需要非const operator+
成員函數嗎?
可以在非const
對象上調用const
成員函數,因此不,您不需要非const
重載。
Fraction a, b;
Fraction c = a + b; // no problem
通常,使用member operator+=
和nonmember operator+
可以更好地解決此類問題,如下所示:
class Fraction {
public:
const Fraction& operator+=(const Fraction&);
};
Fraction operator+(const Fraction& lhs, const Fraction& rhs) {
Fraction res(lhs);
res += rhs;
return res;
}
可以。您可以在非const
對象上調用const
方法,就像將const
引用綁定到非const
對象一樣。 IOW,您始終可以將可以修改的對象傳遞給承諾不對其進行修改的代碼-不存在安全損失。 相反,這是不正確的-如果您有const
對象(=>您承諾不會修改的對象),則無法將其傳遞給不遵守此承諾的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.