单选题已知将运算符“+”和“*”作为类Complex的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于(  )。Ac1.operator*(c2.operator+(c1))Bc1.operator+(c2.operator*(c1))Cc1.operator*(c1.operator+(c2))Dc2.operator+(c1.operator*(c2))

单选题
已知将运算符“+”和“*”作为类Complex的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于(  )。
A

c1.operator*(c2.operator+(c1))

B

c1.operator+(c2.operator*(c1))

C

c1.operator*(c1.operator+(c2))

D

c2.operator+(c1.operator*(c2))


参考解析

解析:
运算符“+”和“*”都是二元运算符,作为成员函数重载时,形参个数比操作数个数少一个,且顺序不能颠倒。重载运算符“*”时,c2为第一操作数;重载运算符“+”时,c1为第一操作数;因此表达式“c1+c2*c1”等价于“c1.operator+(c2.operator*(c1))”。

相关考题:

若以非成员函数形式 , 为类 Bounce 重载 “ ! ” 运算符 , 其操作结果为一 bool 型数据 , 则该运算符重载函数的原型是 【 13 】 。

下面是复数类 complex 的定义 , 其中重载的运算符 “ + ” 的功能是返回一个新的复 数对象 , 其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:class complex{double real; // 实部double imag; // 虚部public:complex(double r,double i):real(r),imag(i){}complex operator+(complex a){return complex( 【 14 】 );}};

若以非成员函数形式,为类Bounce重载“!”运算符,其操作结果为一个bool型数据,则该运算符重载函数的原型是______。

( 13 )有如下复数类的声明,请补充完整。class complex{double real; // 实部double imag; // 虚部public:complex(double x , double y){real=x;imag=y;}perator+(complex c){// 重载加法运算符 “ + ”return complex(___________)}};

( 14 )下列有关运算符函数的描述中,错误的是A )运算符函数的名称总是以 operator 为前缀B )运算符函数的参数可以是对象C )运算符函数只能定义为类的成员函数D )在表达式中使用重载的运算符相当于调用运算符重载函数

( 24 )下列关于运算符重载的描述中,错误的是A )可以通过运算符重载在 C++ 中创建新的运算符B )赋值运算符只能重载为成员函数C )运算符函数重载为类的成员函数时,第一操作数是该类对象D )重载类型转换运算符时不需要声明返回类型

已知类X成功地重载了- -、+、=、[ ]这几个运算符。则其中肯定属于成员函数的运算符是:A.前置- -和[ ]B.=和[ ]C.[ ]和后置- -D.+和=

运算符函数调用格式的表达式:y/x++与表达式:y.operator/(operator++(x,O))含义相同,由此可看出()。A.“/”和“++”都是作为成员函数重载的B.“/”和“++”都是作为非成员函数重载的C.“/”是作为成员函数重载的,“++”是作为非成员函数重载的D.“/”是作为非成员函数重载的,“++”都是作为成员函数重载的

多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但运算符[]只能作为类的______函数重载。

若要重载+、=、、==和[]运算符,则必须作为类成员重载的运算符是A.+和=B.=和C.==和D.=和[]

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

已知类X成功地重载了- -、=、+、和[]这几个运算符,则其中肯定属于成员函数的运算符是( )。A.+和=B.[]和后置--C.=和[]D.前置- -和[]

为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是( )。A.+B.=C.D.++

下面是复数类complex的定义,其中作为友元函数重载的运算符“--”的功能是将参数对象的实部减1,然后返回对该对象的引用;请补充完整。class complex{private:int real;int imag;public:complex(int r=0,int i=0):real(r),imag(i){}void show (){cout<<real<<(imag<0?"-":"+")<<imag<<'i';}______;};complex operator -- (complex c){c.real --;return c;}

已知表达式++a中的“++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为A.a.operator++(1)B.operator++(A)C.operator++(a,1)D.a.operator++()

已知类Ben中将二元运算符“/”,重载为友元函数,若c1、c2是Ben的两个对象当使用运算符函数进行显式调用时,与表达式c1/c2等价的表示为______。

使用VC6打开考生文件夹下的工程test38_3。此工程包含一个test38_3.cpp,其中定义了类complex,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)添加类complex的无参数的构造函数的定义,将私有成员real和imag都初始化为0。请在注释“//**1**”之后添加适当的语句。(2)添加类complex的带两个参数的重载构造函数,两个参数r和i都是double类型,要求将r赋值给私有成员real, i赋值给私有成员imag,同时允许调用时参数i可是省略,请在注释“//**2**”之后添加适当的语句。(3)完成类complex重载加法函数的定义,该函数直接返回一个类complex的对象,同时把参数对象c的实部real和虚部imag分别与当前对象对应部分分别相加,请在注释“//**3**”之后添加适当的语句。(4)完成类complex的友元函数print的定义,使其以格式“real+imagi”输出,请在注释“//**4**”之后添加适当的语句。源程序文件test38_3.cpp清单如下;include <iostream.h>class complex{public:// ** 1 **// ** 2 **{real=r;imag=i;}complex operator+(complex c);friend void print(complex c);private:double real,imag;};complex complex::operator+(complex c){// ** 3 **}// ** 4 **cout<<c.real<<"+"<<c.imag<<"i"<<endl;}void main( ){complex c1(2.0,3.0),c2(4.0,-2.0),c3;c3=c1+c2;print(c3);c3=c3+complex(3.5);print(c3);}

下列关于运算符函数的描述中,错误的是( )。A.运算符函数的名称总是以0perator为前缀B.运算符函数的参数可以是对象C.运算符函数只能定义为类的成员函数D.在表达式中使用重载的运算符相当于调用运算符重载函数

前置自增运算符++重载为类的友元函数的形式为【 】,重载为类的成员函数的形式为【 】。 (设类为A,类对象为a)

一个双目运算符作为类的成员函数重载时,重载函数的参数表中有【 】个参数。

在C++中,如果在类中重载了函数调用运算符(),那么重载函数调用的一般形式为:()A、(表达式)对象B、(表达式表)对象C、对象(表达式)D、对象(表达式表)

一个单目运算符作为类的成员函数重载时有()个参数;如果作为独立函数重载,则有()个参数。

单选题在C++中,如果在类中重载了函数调用运算符(),那么重载函数调用的一般形式为:()A(表达式)对象B(表达式表)对象C对象(表达式)D对象(表达式表)

单选题已知表达式++a中的“++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为(  )。Aa.operator++(1)Boperator++(a)Coperator++(a,1)Da.operator++()

单选题为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是(  )。A+B=CD++

单选题运算符函数调用格式的表达式“y/x抖”与表达式“y.operator/(operator++(x,o))”的含义相同,由此可看出(  )A“/”和“++”都是作为成员函数重载的B“/”和“++”都是作为非成员函数重载的C“/”是作为成员函数重载的,“++”是作为非成员函数重载的D“/”是作为非成员函数重载的,“++”都是作为成员函数重载的

单选题下列关于赋值运算符“=”重载的叙述中,正确的是(  )。A赋值运算符只能作为类的成员函数重载B默认的赋值运算符实现了“深层复制”功能C重载的赋值运算符函数有两个本类对象作为形参D如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符