应该如何理解这个 "int operator-(int value)" 和这个程序中的输出?

How should understand this "int operator-(int value)" and the output in this program?

(Visual Studio 2012)

#include <iostream>
using namespace std;
class Bar
{
public:
    int operator-(int value)
    {
        return 5;
    }
};

int main()
{
    Bar bar;
    cout<<"First: "<<bar-10<<endl;
    cin.ignore(100,'\n');
    return 0;
}

两个问题:

  1. 在class中有一个重载的for-符号,只要正确的值为整数,就会return5,我说的对吗?

  2. 输出部分cout<<"Second: "<<bar-10<<endl;,如果-10之前没有对象,则输出-10;如果一个对象放在那里,它会输出5,为什么?对象 bar 扮演什么角色?

  1. In class, there is an overloaded for "-" sign, as long as ther rightvalue is an integer, it will return 5, am I right?

是的。运算符 - 的重载方式是从 Bar 中减去任何整数产生固定值 5.

  1. In the output part cout<<"Second: "<<bar-10<<endl; if there is not an object before -10, it will output -10; if an object is put there, it will outputs 5. Why? What role does the object bar play?

如果去掉bar,破折号就变成十前面的一元减号运算符,变成负十。这就是打印的内容。

当存在 bar 时,dash 被解释为二进制减法运算,bar 是其左侧操作数,10 是其右侧运算符。由于 Bar class 提供了覆盖,这就是 C++ 调用生成 5 作为答案的方法。