操作员订单过载
Overloading operator order
可能重复:
C++中的运算符重载为int+obj
操作员过载c++-faq
我有一个带有此运算符的Point
对象:
Point operator +(float other) const {
return Point(x + other, y + other, z + other);
}
我可以这样执行加法:
point + 10
但我不能按相反的顺序执行:
10 + point
是否有其他操作员需要过载才能提供此功能?
您通常想要重载全局运算符:
Point operator+(Point const &a, float b);
Point operator+(float a, Point const &b);
您可能只想使用一个过载,而不是两个过载:
Point operator+(Point const &a, Point const &b);
然后使用ctor从浮点创建一个点:
class Point {
public:
Point(float);
};
在这种情况下,将浮点添加到点将使用ctor将浮点转换为点,然后使用重载运算符+将这两个点添加在一起。
作为一个免费函数:
Point operator+(float other, const Point &pt) {
return pt+other;
}
给定一个现有的Point& Point::operator+=(float other)
,添加以下两个免费函数:
Point operator+(Point pt, float other) {
return pt += other;
}
Point operator+(float other, Point pt) {
return pt += other;
}
类外:
inline Point operator+(const float& other, const Point& pnt) { return Point(...); };
相关文章:
- 操作员C++的模棱两可的过载
- C++中>>操作员过载时出现问题?
- SFINAE不能防止模棱两可的操作员过载吗?
- 在这种情况下是私有的吗?试图使操作员<<过载
- C++操作员过载>>
- 使用enable_if添加过载操作员==
- 在模板类成员函数中无法使用以前定义的过载操作员
- C 中字符串的过载操作员
- 使用参考而不是过载操作员
- 如何在没有包含朋友的情况下使用过载操作员
- 是否允许使用标准库类型和内置类型过载操作员
- 过载操作员短路 && 和 ||在C++17
- C++过载+操作员友情功能
- C 模板和过载操作员
- 线性代数的过载操作员
- 过载操作员<<
- 过载<<操作员错误
- 过载操作员功能失败
- 调用过载操作员时出现歧义
- 成员不可访问.过载+操作员