C++给学生习题第7章练习题(共7页).docx





《C++给学生习题第7章练习题(共7页).docx》由会员分享,可在线阅读,更多相关《C++给学生习题第7章练习题(共7页).docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第7章练习题同步练习7.1一、选择题1在下列运算符中,不能重载的是( )。(A)!(B)sizeof(C)new(D)delete2在下列关于运算符重载的描述中,( )是正确的。(A)可以改变参与运算的操作数个数(B)可以改变运算符原来的优先级(C)可以改变运算符原来的结合性(D)不能改变原运算符的语义3运算符函数是一种特殊的( )或友元函数。(A)构造函数(B)析构函数(C)成员函数(D)重载函数4设op表示要重载的运算符,那么重载运算符的函数名是( )。(A)operator op(B)op(C)函数标识符(D)函数标识符op5用于类运算的运算符通常都要重载。但有
2、两个运算符系统提供默认重载版本,它们是( )。(A)-和.(B)+和-(C)=和&(D)new和delete【解答】BDCAC同步练习7.2一、选择题1在下列函数中,不能重载运算符的函数是( )。(A)成员函数(B)构造函数(C)普通函数(D)友元函数2在下列运算符中,要求用成员函数重载的运算符是( )。(A)=(B)=(C)=(D)+3在下列运算符中,要求用友元函数重载的运算符是( )。(A)=(B)(C)(D)( )4如果希望运算符的操作数(尤其是第一个操作数)有隐式转换,则重载运算符时必须用( )。(A)构造函数(B)析构函数(C)成员函数(D)友元函数5当一元运算符的操作数,或者二元运
3、算符的左操作数是该类的一个对象时,重载运算符函数一般定义为( )。(A)构造函数(B)析构函数(C)成员函数(D)友元函数【解答】BACDC二、程序练习1阅读程序,写出运行结果。#include using namespace std;class T public : T() a = 0; b = 0; c = 0; T( int i, int j, int k ) a = i; b =j; c = k; void get( int &i, int &j, int &k ) i = a; j = b; k = c; T operator* ( T obj ); private: int a,
4、b, c;T T:operator* ( T obj ) T tempobj; tempobj.a = a * obj.a; tempobj.b = b * obj.b; tempobj.c = c * obj.c; return tempobj;int main() T obj1( 1,2,3 ), obj2( 5,5,5 ), obj3; int a, b, c; obj3 = obj1 * obj2; obj3.get( a, b, c ); cout( obj1*obj2 ): a = atb = btc = cn; (obj2*obj3).get( a, b, c ); cout(
5、obj2*obj3 ): a = atb = btc = cn;【解答】 2阅读程序,写出运行结果。#include using namespace std;class Vector public: Vector() Vector(int i,int j) x = i; y = j; friend Vector operator+ ( Vector v1, Vector v2 ) Vector tempVector; tempVector.x = v1.x + v2.x; tempVector.y = v1.y + v2.y; return tempVector; void display()
6、 cout ( x , y ) endl; private: int x, y;int main() Vector v1( 1, 2 ), v2( 3, 4 ), v3; cout v1 = ; v1.display(); cout v2 = ; v2.display(); v3 = v1 + v2; cout v3 = v1 + v2 = ; v3.display();【解答】 同步练习7.3一、选择题1设有类A的对象Aobject,若用成员函数重载前置自增表达式,那么+Aobject被编译器解释为( )。(A)Aobject.operator+()(B)operator+(Aobject)
7、(C)+(Aobject)(D)Aobject : operator+()2运算符+,=,+和中,只能用成员函数重载的运算符是( )。(A)+和=(B)和后置+(C)=和(D)前置+和3在C+中,如果在类中重载了函数调用运算符(),那么重载函数调用的一般形式为( )。(A)(表达式)对象(B)(表达式表)对象(C)对象(表达式)(D)对象(表达式表)4设有类A的对象Aobject,若用友元函数重载后置自减表达式,那么Aobject-被编译器解释为( )。(A)Aobject.operator- ()(B)operator- (Aobject,0)(C)- (Aobject,0)(D)- (Ao
8、bject,0)5如果表达式+j*k中的+和*都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可以表示为( )。(A)operator*(j.operator+(),k)(B)operator*(operator+(j),k)(C)operator+(j).operator*(k)(D)operator*(operator+(j),)6如果类A要重载插入运算符,那么重载函数参数表的形式一般定义为( )。(A)(constA&)(B)(ostream&)(C)(constA&, ostream&)(D)(ostream&, constA&)【解答】ACDBBD同步练习7.4一、选择题1
9、类型转换函数只能定义为一个类的( )。(A)构造函数(B)析构函数(C)成员函数(D)友元函数2具有一个非默认参数的构造函数一般用于实现从( )的转换。(A)该类类型到参数类型(B)参数类型到该类类型(C)参数类型到基本类型(D)类类型到基本类型3假设ClassX是类类型标识符,Type为类型标识符,可以是基本类型或类类型,Type_Value为Type类型的表达式,那么,类型转换函数的形式为( )。(A)ClassX : operator Type(Type t) return Type_Value; (B)friendClassX : operator Type() return Type
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学生 习题 练习题

限制150内