单选题 有如下类模板定义: temp1ate<typename T> c1ass BigNumber{ long n; public: BigNumber(T i):n(i){} BigNumber operator+(BigNumberb){ return BigNumbcr(n+b.n); } } 已知b1、b2是BigNumber的两个对象,则下列表达式中错误的是( )。
【正确答案】 C
【答案解析】解析:C++运算符的重载有两个方式,一种是做为成员函数,另一种是做为友元函数。前种C++默认省略第一个参数(事实上是对象本身),而后一种是所有的参数都要写全。比如对加法的重载:成员方式为COperator operator +(COperator&op);,在调用的过程中我们可以理解为result= operator+(op):友元方式为friend COperatoroperator — (COperator &op1,COperator &op2);,在调用的过程中我们可以理解为result=operator—(op1,op2);。对于本题来说,整数3与b1相加时,3是int型,b1是BigNumber<T>型,int型不能和别的型做运算。