使用一元加运算符

use*_*133 10 c++

我听说它被用作重载运算符+

class MyClass
{
    int x;
public:
    MyClass(int num):x(num){}
    MyClass operator+(const MyClass &rhs)
    {
        return rhs.x + x;
    }
};

int main()
{
    MyClass x(100);
    MyClass y(100);
    MyClass z = x + y;
}
Run Code Online (Sandbox Code Playgroud)

这真的是使用一元加运算符还是它真的是一个二元+运算符?

Joh*_*itb 19

这不是重载和使用一元+ ..你需要使一个自由函数或使成员函数取0参数

class MyClass
{
    int x;
public:
    MyClass(int num):x(num){}
    MyClass operator+() const
    {
        return *this;
    }
};

int main() {
  MyClass x = 42;
  + x;
}
Run Code Online (Sandbox Code Playgroud)

  • @cpx是的,但这可能是一个坏主意,因为所有类型如`int`也会产生一个值,而不是对原始变量的引用."就像投注一样"(Scott Meyers). (4认同)

Rog*_*mbe 5

那是一个二元+运算符.要使一元加运算符超载,你需要这样的东西.