假设我的类包含对象 t1。我必须添加 5 和 t1。<<5+T1请发布满足上述条件的示例。
假设你有一个类型MyClass
你可以为它提供一个operator+
和int,如下所示:
MyClass operator+(MyClass lhs, int rhs) {
return /* ... */ ;
}
虽然你想让它交换,所以也添加一个相反的顺序
MyClass operator+(int lhs, MyClass rhs) {
return rhs + lhs;
}
作为一个完整的例子:
#include <iostream>
struct MyClass {
int value = 0;
};
MyClass operator+(MyClass lhs, int rhs) {
lhs.value += rhs;
return lhs;
}
MyClass operator+(int lhs, MyClass rhs) {
return rhs + lhs;
}
int main() {
MyClass mc{3};
auto result = mc + 5;
std::cout << result.value << 'n';
}
在这一点上,拥有+=
通常是有益的。在+=
方面很容易实现+
MyClass& operator+=(MyClass& lhs, int rhs) {
lhs.value += rhs;
return lhs;
}
MyClass operator+(MyClass lhs, int rhs) {
lhs += rhs;
return lhs;
}
MyClass operator+(int lhs, MyClass rhs) {
return rhs + lhs;
}