(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;
}
两个问题:
在课堂上,有一个重载的for-
符号,只要正确的值是整数,它就会返回5
,对吗?
在输出部分cout<<"Second: "<<bar-10<<endl;
,如果之前没有对象-10
,它将输出-10
; 如果将对象放在那里,它将输出5
,为什么?物体bar
扮演什么角色?
- 在课堂上,“-”符号有一个重载,只要the rightvalue是一个整数,它将返回5,对吗?
是的。运算符-
的重载方式是从中减去任何整数都会Bar
产生的固定值5
。
- 在输出部分,
cout<<"Second: "<<bar-10<<endl;
如果之前没有对象-10
,它将输出-10
; 如果将对象放在那里,它将输出5
。为什么?对象bar
扮演什么角色?
如果删除bar
,破折号将成为十进制前的一元负运算符,并将其变为负十进制。那就是打印出来的东西。
当bar
那里时,破折号被解释为二进制减法运算,带有bar
其左侧操作数和10
右侧运算符。由于Bar
类提供了覆盖,因此这是C ++调用产生5
的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句