《面向对象程序设计》第05章在线测试
《面向对象程序设计》第05章在线测试
剩余时间:
59:16
答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)
1、为了实现两个复数类对象c1,c2相加c1+c2,下面的语句正确的是(B)
A、class Complex { Complex operator+();} B、class Complex { Complex operator+(Complex &);}
C、class Complex { Complex operator+(Complex, Complex);} D、Complex operator+(Complex &);
2、如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( C)。
A、a.operator==(b) B、b.operator==(a)
C、operator==(a,b) D、operator==(b,a)
3、如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( D)。
A、a.operator++() B、operator++(a)
C、operator++(a,1) D、operator++(1,a)
4、下面语句声明类A对象的前缀运算符++的是(D)
A、class A { ++operator();}; B、class A { operator++();};
C、class A { friend operator++();}; D、class A { operator++ (int);};
5、一个程序中数组a和变量k定义为“int a[5][10],k;”,且程序中包含有语句“a(2,5)=++k 3;”,则此语句中肯定属于重载操作符的是(A )。
A、( ) B、=
C、++ D、
第二题、多项选择题(每题2分,5道题共10分)
1、在重载一运算符时,若运算符函数的形参表中没有参数,则可能的情况是( AC)。
A、该运算符是一个单目运算符。
B、该运算符函数有一个隐含的参数this。
C、该运算符函数是类的成员函数。
D、该运算符函数是类的友元函数。
2、关于运算符重载,下列说法错误的是(ACD )。
A、所有的运算符都可以重载。
B、通过重载,可以使运算符应用于自定义的数据类型。
C、通过重载,可以创造原来没有的运算符。
D、通过重载,可以改变运算符的优先级。
3、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符不可能是(ACD )。
A、作为友元函数重载的1元运算符
B、作为成员函数重载的1元运算符
C、作为友元函数重载的2元运算符
D、作为成员函数重载的2元运算符
4、下面说法正确的是(AB (这题全靠蒙对的,是很多次。。。))
A、new和del_ete是运算符
B、new和del_ete只能被重载为成员函数,不能重载为友元
C、new和del_ete重载函数不能用static修饰
D、new和del_ete重载函数一定不是静态成员函数
5、重载del_ete运算符的格式错误的是(CD )
A、void * operator del_ete(void );
B、void * operator del_ete(void ,参数表);
C、void * operator del_ete(参数表);
D、void * operator del_ete();
第三题、判断题(每题1分,5道题共5分)
1、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。
正确 错误T
2、重载双目运算符+作用于两个类A对象,重载函数的返回值一定是类A对象。
正确 错误F
3、双目运算符重载为成员函数的时候,一个运算对象由this指针给出,另一个运算对象通过重载运算符的形参传递。
正确 错误T
4、双目运算符op重载为A类的成员函数后,表达式“ obj1 op obj2”可以解释为:operator op(obj1,obj2)。
正确 错误F
5、重载比较运算符函数的返回值必须是bool类型。
正确 错误T