单选题已知将运算符“+”和“*”作为类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))”。
运算符“+”和“*”都是二元运算符,作为成员函数重载时,形参个数比操作数个数少一个,且顺序不能颠倒。重载运算符“*”时,c2为第一操作数;重载运算符“+”时,c1为第一操作数;因此表达式“c1+c2*c1”等价于“c1.operator+(c2.operator*(c1))”。
相关考题:
下面是复数类 complex 的定义 , 其中重载的运算符 “ + ” 的功能是返回一个新的复 数对象 , 其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:class complex{double real; // 实部double imag; // 虚部public:complex(double r,double i):real(r),imag(i){}complex operator+(complex a){return complex( 【 14 】 );}};
( 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 )重载类型转换运算符时不需要声明返回类型
运算符函数调用格式的表达式:y/x++与表达式:y.operator/(operator++(x,O))含义相同,由此可看出()。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++()
使用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等效的运算符函数调用形式为( )。Aa.operator++(1)Boperator++(a)Coperator++(a,1)Da.operator++()
单选题运算符函数调用格式的表达式“y/x抖”与表达式“y.operator/(operator++(x,o))”的含义相同,由此可看出( )A“/”和“++”都是作为成员函数重载的B“/”和“++”都是作为非成员函数重载的C“/”是作为成员函数重载的,“++”是作为非成员函数重载的D“/”是作为非成员函数重载的,“++”都是作为成员函数重载的
单选题下列关于赋值运算符“=”重载的叙述中,正确的是( )。A赋值运算符只能作为类的成员函数重载B默认的赋值运算符实现了“深层复制”功能C重载的赋值运算符函数有两个本类对象作为形参D如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符