有如下类模板定义: template<typename T> class BigNumber{ long n: public: BigNumber(T i):n(i){} BigNumber operator

admin2020-04-07  47

问题 有如下类模板定义:
    template<typename T>
    class BigNumber{
    long n:
    public:
    BigNumber(T i):n(i){}
    BigNumber operator+(BigNumber b){
    return BigNtmaber(n+b.n);
    }
    }
    已知b1、b2是,BigNumber的两个对象,则下列表达式中错误的是(    )。

选项 A、b1+b2
B、b1+3
C、3+b1
D、3+3

答案C

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

最新回复(0)