问题 单项选择题

有如下类模板定义:
template<typename T>
class BigNumber
long n;
public:
BigNumber(T i):n(i)
BigNumber operator+(BigNumber B)
return BigNumber(n+b.n);


已知b1、b2是BigNumber的两个对象,则下列表达式中错误的是( )。

A.b1+b2

B.b1+3

C.3+b1

D.3+3

答案

参考答案:C

解析: C++运算符的重载有两个方式,一种是做为成员函数,另种是做为友无函数。前种C++默认省略第一个参数(事实上是对象本身),而后一种是所有的参数都要写全。比如对加法的重载:成员方式为COperator operaior+(Coperator &op);,在调用的过程中我们可以理解为result=operator+(op);友元方式为friend COperator operator-(COperator &op1, COperator &op2);,在调用的过程中我们可以理解为result=operator-(op1, op2);。
对于本题来说,整数3与b1相加时,3是int型,b1是BigNumber<T>型,int型不能和别的型做运算。

选择题
问答题 简答题