我们可以在 c++ 中使用运算符重载添加 "User defined Datatype" + "Predefined Data Type"



假设我的类包含对象 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;
}

相关内容

最新更新