0
我總是覆蓋運營商這樣的首選方式:什麼是重寫的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);
}
但是今天我才明白,你可以用「朋友」關鍵字創建運營商太:
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);
}
考慮到我想要左側和右側操作員,我也(嘗試)遵循核心指導原則,哪種方法是首選方法?
Fyi,這值得一讀:[運算符重載](https://stackoverflow.com/questions/4421706/operator-overloading)。特別是[會員與非會員之間的決定]部分(http://stackoverflow.com/questions/4421706/operator-overloading/4421729#4421729)。 – WhozCraig
不要混淆**重載**和**覆蓋**。這些是非常不同的東西! –