单选题将运算符“+”重载为非成员函数,下列原型声明中,错误的是(  )。A MyClock operator+(MyClock,long);B MyClock operator+(MyClock,MyClock);C MyClock operator+(1ong,long);D MyClock operator+(1ong,MyClock);

题目
单选题
将运算符“+”重载为非成员函数,下列原型声明中,错误的是(  )。
A

MyClock operator+(MyClock,long);

B

MyClock operator+(MyClock,MyClock);

C

MyClock operator+(1ong,long);

D

MyClock operator+(1ong,MyClock);


相似考题
更多“单选题将运算符“+”重载为非成员函数,下列原型声明中,错误的是(  )。A MyClock operator+(MyClock,long);B MyClock operator+(MyClock,MyClock);C MyClock operator+(1ong,long);D MyClock operator+(1ong,MyClock);”相关问题
  • 第1题:

    将运算符“+”重载为非成员函数,下列原型声明中,错误的是( )。

    A.MyClock operator+(MyClock,long);

    B.MyClock operator+(MyClock,MyClock);

    C.MyClock operator+(long,long);

    D.MyClock operator+(long,MyClock);


    正确答案:C
    解析:首先非成员函数一般都是友元函数,相比成员函数第一个操作数是对象本身以this指针的形式隐含在参数列表中,非成员函数调用必须显性的列出参数;选项C中没有MyClock类型,故选C。

  • 第2题:

    下面是重载为非成员函数的运算符函数原型,其中错误的是( )。

    A.Fraction operator+ (Fraction,Fraction);

    B.Fraction opemtor-(Fraction);

    C.Fraction& perator=(Fraction&,Fraction);

    D.Fraction& operator+=(Fraction&,Fraction);


    正确答案:C

  • 第3题:

    运算符“+”允许重载为类成员函数,或者非成员函数。若用operator+(c1,c2)这样的表达式来使用运算符“+”,应将“+”重载为【 】 函数。


    正确答案:非成员
    非成员 解析:“+”是一个二元运算符,当它作为成员函数重载时形参表中只有一个参数,对应于第二操作数,而第一操作数就是对象本身,以this指针的形式隐藏在形参表中。而当“+”作为非成员函数重载时,两个操作数都出现在形参表中。

  • 第4题:

    将运算符“+”重载为非成员函数,下列原型声明中,错误的是( )。

    A.MyClockoperator+(MyClock,long);

    B.MyClockoperator+(MyClock,MyCloek);

    C.MyCloekoperator+(long,long);

    D.MyClockoperator+(long,MyCloek):


    正确答案:C
    C。【解析】非成员函数一般都是友元函数,相比成员函数第一个操作数是对象本身以thiS指针的形式隐含在参数列表中,非成员函数调用必须显式的列出参数;选项C中没有MyClock类型,故选C。

  • 第5题:

    已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是

    A.Value operator+(Value v, int i);

    B.Value operator+(Value v=value, int i);

    C.Value operator+(Value v, int i=0);

    D.Value operator+(Value v=value, int i=0);


    正确答案:B
    解析:类名operator+(类名String & s1,类名String & s2)。

  • 第6题:

    若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 A.Data+(DatA.;SXB

    若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

    A.Data+(DatA.;

    B.Data operator+(DatA.;

    C.Data+operator(DatA.;

    D.operator+(Data,DatA.;


    正确答案:B
    根据重载加法运算符的格式,只有B选项正确。

  • 第7题:

    已知Value是一个类,Value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是( )。

    A.Value operator+(Value v,int i);

    B.Value operator+(Value v=value,int i);

    C.Value operator+(Value vint i=0);

    D.Value operator+(Value v=value,int i=0);


    正确答案:B
    解析: 本题考查的是for循环语句。执行循环语句,变量i从50递减,每次减2,所以循环会执行25次,输出 25个’*’。

  • 第8题:

    MyClock 类的拷贝构造函数的声明语句为( )。

    A.MyClock&(MyClock x)

    B.MyClock(MyClock x)

    C.MyClock(MyClock &x)

    D.MyClock(MyClock *x)


    正确答案:C
    解析:拷贝构造函数头的一般形式为:类名>::类名>(const类名>&引用对象名>)。

  • 第9题:

    下面是重载为非成员函数的运算符的函数原型,其中错误的是( )。

    A.Fraction operator+(Fraction,Fraction);

    B.Fraction operator一(Fraction);

    C.Fraction&operator=(Fraction&,Fraction);

    D.Fraction&operator+=(Fraction&,Fraction);


    正确答案:C
    本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则,本题答案为c,c项正确原型为:Fractionperator=(Fraction&)。

  • 第10题:

    如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

    • A、a.operator+(b)
    • B、b.operator+(a)
    • C、operator+(a,b)
    • D、operator(a+b)

    正确答案:A

  • 第11题:

    单选题
    下面是重载为非成员函数的运算符函数原型,其中错误的是(  )。
    A

    Fraction operator+(Fraction,Fraction);

    B

    Fraction operator-(Fraction);

    C

    Fraction& operator=(Fraction&,Fraction);

    D

    Fraction& operator +=(Fraction&,Fraction);


    正确答案: A
    解析:
    C++语言规定,“=”运算符只能作为成员函数重载,不能作为非成员函数重载。

  • 第12题:

    单选题
    下列运算符函数中,肯定不属于类Value的成员函数的是(  )。
    A

    Value operator+(Value);

    B

    Value operator-(Value,Value);

    C

    Value operator*(int);

    D

    Value operator/(Value);


    正确答案: C
    解析:
    运算符作为非成员函数时,由于没有隐含this指针,因此所有的操作数必须出现在参数表中。B项,函数形参有两个操作数,必然是非成员函数;ACD三项都只有一个形参变量,有可能是要求两个操作数的成员函数。

  • 第13题:

    若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

    A) Data+(DatA) ;

    B) Data operator+{Data};

    C) Data+operator{Data};

    D) operator+(Data,DatA) ;

    A.

    B.

    C.

    D.


    正确答案:B

  • 第14题:

    如果表达式x * y+z中,“*”是作为友元函数重载的,“+”是作为成员函数重载的,则该表达式还可为

    A.operator+(operator * (x, y) ,Z)

    B.x. operator+(operator * (x, y) ,z)

    C.y. operator * (operator+(x, y) ,z)

    D.x. operator+(operator * (x, y) )


    正确答案:A
    解析:C++中用成员函数重载x * y为:x. operator * (y) ,用友元函数重载x * y为:operator
    * (x, y) ,用成员函数重载x+y为:x. operator+(y) ,用友元函数重载x+y为:operator+(x, y) 。

  • 第15题:

    假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( )。

    A.AB operator+(AB &a,AB &B)

    B.AB perator+(AB &)

    C.opetator+(AB a)

    D.AB & operator+()


    正确答案:B

  • 第16题:

    下列是重载为非成员函数的运算符函数原型,其中错误的是( )。

    A.Fraction operator+(Fraction,Fraction);

    B.Fraction operator-(Fraction);

    C.Fraction&operator=(Fraction&,Fraction);

    D.Fraction&operator+=(Fraction&,Fraction);


    正确答案:C
    解析: 由于取负运算符“-”是一元运算符,当作为成员函数重载时参数表中没有参数,那个唯一的操作数以this指针的形式隐藏在参数表中。

  • 第17题:

    有如下的运算符重载函数定义: double operator+(inti,intk){return double(i+k);} 但定义有错误,对这个错误最准确的描述是( )。

    A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的

    B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

    C.没有将运算符重载函数声明为某个类的友元

    D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


    正确答案:D
    解析: 此题考查的是运算符的重载。C++语言规定,不能作为非成员函数重载的运算符有=、[]、()、->以及所有的类型转换运算符,故选项A)错误:运算符重载对返回值类型没有限制,故选项B)错误;C++并不强制要求非成员重载的运算符一定是某个类的友元,所以选项C)错误;题目中重载的“+”运算符的两个参数都是int类型,而C++已经提供了求两个int型数据之和的运算符+,编译器无法区分应该调用哪一个,所以应该选择选项D)。

  • 第18题:

    假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员数的声明语句为( )。

    A.AB operator+(AB&a,AB&)

    B.AB perator+(AB&)

    C.opetacor+(AB A)

    D.AB &operator+()


    正确答案:B
    解析: 因为题目的要求是对类AB定义加号操作符重载成员函数,所以首先应该对范围加以限定,参数是对类对象的引用。

  • 第19题:

    已知类MyClas有一个只需要一个double型参数的构造函数,其将运算符“+”重载为友元函数。要使语句序列 MyClas x(1.2),y(2.3),z(0);z=x+y; 能够正常运行,运算符函数 operator+应在类中声明为( )。

    A.friend MyClas operator+(int,MyClas&);

    B.friend MyClas operator+(MyClas,MyClas);

    C.friend MyClas operator+(MyClas,MyClas&);

    D.friend MyClas operator+(MyClas&,MyClas);


    正确答案:B
    解析:由重载的定义格式可知运算符函数应在类中声明为:friendMyClasoperator+(MyClas,MyClas);

  • 第20题:

    MyClock为一个类,则指向“MyClock a,* p;”语句时,调用该类构造函数( )次。

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    解析:*p不调用类的构造函数,*p并不定义类对象,而是定义了一个指针指向一个MyClock的对象。

  • 第21题:

    在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。

    • A、operator+有两个参数,operator*有两个参数
    • B、operator+有两个参数,operator*有一个参数
    • C、operator+有一个参数,operator*有两个参数
    • D、operator+有一个参数,operator*有一个参数

    正确答案:C

  • 第22题:

    单选题
    若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是(  )。
    A

    Data+ (Data);

    B

    Data operator+(Data);

    C

    Data +operator(Data);

    D

    operator+ (Data, Data);


    正确答案: B
    解析:
    “+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,它对应于第二个操作数,而第一个操作数是对象本身。因此,声明形式为“Data operator+(Data)”。

  • 第23题:

    单选题
    已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是(  )。
    A

    Value operator+(Value v,int i);

    B

    Value operator+(Value v=value,int i);

    C

    Value operator+(Value v ,int i=0);

    D

    Value operator+(Value v=value,int i=0);


    正确答案: B
    解析:
    “+”是二元运算符,以非成员函数的形式重载,则其第一操作数是对象本身,i为第二操作数。