求助!!一道C++重载的选择题

在C++中,用非成员函数重载双目运算符时,其参数表中的参数个数为______
A.0个 B.1个 C.2个 D.3个
答案为什么选C?具体是哪两个? 能不能举个具体的例子?
我是个刚学C++的新手,麻烦讲的通俗些,详细些,谢谢了~

双目运算符,比如+-*/
你定义一个+运算符的话,参数肯定要有一个加数和一个被加数的啊。所以是两个参数。
如果是用成员函数重载的话,因为其中一个参数可以由隐式的this完成,所以只需要一个参数。追问

关于成员函数的那个能麻烦讲的再具体些吗?最好举个例子,为什么只用了一个参数,谢谢了~

追答

这个书上就有例子啊。
写个书上的例子吧。假设有个人民币类class RMB,有两个private成员unsigned int yuan和jf
如果是定义的成员函数+
RMB RMB::operator + (RMB& s)//只要带一个参数,因为函数隐藏一个参数this
{
unsigned int c = jf +s.jf;//这里其实是this->jf +s.jf
unsigned int d = yuan +s.yuan;//这里其实是this->yuan +s.yuan
RMB result(c,d);
return result;

}
如果是定义的非成员函数+
RMB operator + (RMB& s1, RMB& s2)//要带两个个参数
{
unsigned int c = s1.jf +s2.jf;
unsigned int d = s1.yuan +s2.yuan;
RMB result(c,d);
return result;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-01
l因为双目,所以要2个参数

#include <iostream>
#include <string>
using namespace std;

struct A {
int m_val;

A(int n) : m_val(n) {}
};

A operator+(A& l, A& r) {
return A(l.m_val + r.m_val);
}

int main( ){

A a(5), b(3);
A c = a + b;
cout << c.m_val << endl;
return 0;
}
第2个回答  2013-07-01
重载+
c=a+b;
a和b
第3个回答  2013-07-01
运算所需变量为两个的运算符叫做双目运算符。 你要重载 双目运算符 ,那参数肯定是2 了。
相似回答