运算符重载自考习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2000.10
19、重载的运算符仍然保持其原来的优先级、结合性和____________。
25、下面程序希望产生的输出为4+3i,但是运行输出是3+3i,请指出错误并改正
#include
class complex {
int real; // 实部
int imag; // 虚部
public:
complex(int r=0,int i=0): real(r),imag(i) {}
void show() { cout< complex operator++() { real++; return * this; } }; void main() { complex c(2,3); ++++c; c.show(); } Key:complex &operator++() { real++; return * this; } 2001.10 29.下面是类fraction(分数)的定义,其中重载的运算符<<以分数形式输出结果,例如将三分之二输出为2/3。在横线处 填上适当字句。 class fraction{ int den; //分子 int num; //分母 friend ostream& operator<<(ostream&,fraction); … }; ostream& operator <<(ostream& os,fraction fr){ _________; return _________; } 29.os< 2002.10 6.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达 式还可表示为( ) A.operator*(i.operator++(),k) B.operator*(operator++(i),k) C.i.operator++().operator*(k) D.k.operator*(operator++(i)) 33.写出下面程序的输出结果。 #include class FUN{ friend ostream& operator <<(ostream&,FUN); }fun; ostream& operator<<(ostream& os,FUN f){ os.setf(ios::left); return os; } void main() { cout< cout< } 输出为: 2003.10 3.在下列成对的表达式中,运算符“+”的意义不相同 ...的一对是( ) A.5.0+2.0和5.0+2 B.5.0+2.0和5+2.0 C.5.0+2.0和5+2 D.5+2.0和5.0+2 31.写出下面程序的输出结果: # include class FunArray{ int *pa; //指向一个数组空间 int size; //数组元素个数 public: FunArray(int a[ ],int thesize):pa(a),size(thesize){ } int Size( ){return size;} int& operator[ ](int index){return pa[index-1];} }; void main( ){ int s[ ]={3,7,2,1,5,4}; FunArray ma(s,sizeof(s)/sizeof(int)); ma[3]=9; for(int i=1;i<=ma.Size( );i++) cout< } 2004.10 3.在下列成对的表达式中,运算结果类型相同的一对是() A.9.0/2.0和9.0/2 B.9/2.0和9/2 C.9.0/2和9/2 D.9/2和9.0/2.0 14.如果重载了运算符+,则相应的运算符函数名是___________________。 21.下面的类Complex 定义中有一处错误,如更正了错误,程序的输出是5+8i。请用下横线标出错误所在行并给出修改意见。 #include #include class Complex{ //3 double real; //4 double imag; //5 public: //6 Complex (double r=0.0, double i=0.0): real (r), imag (i){} //7 void show(){cout< friend Complex& operator += (Complex c1, Complex c2){ //9 c1.real+=c2.real; c1.imag+=c2.imag; //10