关于C++重载的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 21:33:03
Value是一个类,value是它的对象:
(请问下列哪个是对的,为什么啊?)
A:Value operator+(Value v=value,int i)
B:Value operator+(Value v,int i)
C;Value operator+(Value v=value,int i=0)
D:Value operator+(Value v,int i=0)
答案好像是A,为什么啊?
请高手赐教!!不胜感激呵

作为重载操作符的普通函数:
首先作为‘+’操作符,应该是
value1 = value+i;的形式
重载函数中的第一个参数是指加号前的参数,第二个参数指加号后的参数,
因此,除非有特殊要求,两个参数都不应有默认值。
并将重载的操作符声明为类的友元函数。

作为类中的成员函数
在函数参数中不应该定义两个参数,因为‘+’之前的参数默认为本对象。
‘+’之后的参数出现在函数括号中,声明的形式为:
Value operator+(int i);

而且从一般函数规则来说,具有默认值的参数必须放在函数形参表的后面,A选项肯定不对。

答案应该是B。

答案 B

应为你这个是重载函数是类的成员函数,而且重载的是二元运算符,二元运算符值需要一个参数。明白这点就够了 如果是友元函数重载二元运算符才需要两个参数

答案是 B
不能这样初始化 应该在构造函数中初始化