可能重复:
Operator Overloading in C++ as int + obj
Operator overloading c++-faq
我有一个Point
对象与此运算符:
Point operator +(float other) const {
return Point(x + other, y + other, z + other);
}
我可以像这样执行添加:
point + 10
但我不能以相反的顺序执行它:
10 + point
我是否需要重载另一个运算符才能提供此功能?
答案 0 :(得分:3)
您通常希望重载全局运算符:
Point operator+(Point const &a, float b);
Point operator+(float a, Point const &b);
您可能只想使用一个重载,而不是两个重载:
Point operator+(Point const &a, Point const &b);
然后让ctor从浮点创建一个Point:
class Point {
public:
Point(float);
};
在这种情况下,向Point添加一个float将使用ctor将float转换为Point,然后使用重载的operator +将这两个Point添加到一起。
答案 1 :(得分:2)
作为免费功能:
Point operator+(float other, const Point &pt) {
return pt+other;
}
答案 2 :(得分:2)
鉴于现有Point& Point::operator+=(float other)
,请添加以下两个免费函数:
Point operator+(Point pt, float other) {
return pt += other;
}
Point operator+(float other, Point pt) {
return pt += other;
}
答案 3 :(得分:1)
课外:
inline Point operator+(const float& other, const Point& pnt) { return Point(...); };