[英]What is the preferred way to override operators in C++
我總是像這樣覆蓋運算符:
class MyClass {
public:
...
MyClass operator+(const MyClass&) const;
private:
int some_number = 5;
}
MyClass MyClass::operator+(const MyClass& rhs) const
{
return MyClass(some_number + rhs.some_number);
}
但是今天我意識到您也可以使用'friend'關鍵字創建運算符:
class MyClass {
public:
...
friend MyClass operator+(const MyClass&, const MyClass&);
private:
int some_number = 5;
}
MyClass operator+(const MyClass& lhs, const Myclass& rhs)
{
return MyClass(lhs.some_number + rhs.some_number);
}
考慮到我想要左側和右側運算符並且我也(嘗試)遵循“核心准則”,哪種方法是首選?
首選的方法是甚至不讓它成為朋友:
MyClass operator+(MyClass lhs, Myclass const& rhs)
{
return lhs += rhs;
}
當然,這確實依賴於operator+=
但這是更基本的操作。 +=
更改其左側,應為成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.