应该如何理解这个 "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;
}
两个问题:
在class中有一个重载的for-
符号,只要正确的值为整数,就会return5
,我说的对吗?
输出部分cout<<"Second: "<<bar-10<<endl;
,如果-10
之前没有对象,则输出-10
;如果一个对象放在那里,它会输出5
,为什么?对象 bar
扮演什么角色?
- 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
.
- 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
作为答案的方法。
(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;
}
两个问题:
在class中有一个重载的for
-
符号,只要正确的值为整数,就会return5
,我说的对吗?输出部分
cout<<"Second: "<<bar-10<<endl;
,如果-10
之前没有对象,则输出-10
;如果一个对象放在那里,它会输出5
,为什么?对象bar
扮演什么角色?
- 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
.
- 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 outputs5
. Why? What role does the objectbar
play?
如果去掉bar
,破折号就变成十前面的一元减号运算符,变成负十。这就是打印的内容。
当存在 bar
时,dash 被解释为二进制减法运算,bar
是其左侧操作数,10
是其右侧运算符。由于 Bar
class 提供了覆盖,这就是 C++ 调用生成 5
作为答案的方法。