好文档 - 专业文书写作范文服务资料分享网站

C++给学生习题第7章练习题

天下 分享 时间: 加入收藏 我要投稿 点赞

第7章练习题

同步练习

一、选择题

1.在下列运算符中,不能重载的是( )。 (A)!

(B)sizeof

(C)new

(D)delete

2.在下列关于运算符重载的描述中,( )是正确的。 (A)可以改变参与运算的操作数个数 (C)可以改变运算符原来的结合性 (A)构造函数

(B)可以改变运算符原来的优先级 (D)不能改变原运算符的语义 (C)成员函数 (C)函数标识符 (C)=和&

(D)重载函数 (D)函数标识符op (D)new和delete

3.运算符函数是一种特殊的( )或友元函数。

(B)析构函数 (B)op (B)++和-- C

A

C

4.设op表示要重载的运算符,那么重载运算符的函数名是( )。 (A)operator op (A)->和. 【解答】

B

D

5.用于类运算的运算符通常都要重载。但有两个运算符系统提供默认重载版本,它们是( )。

同步练习

一、选择题

1.在下列函数中,不能重载运算符的函数是( )。 (A)成员函数 (A)= (A)=

(B)构造函数 (B)== (B)[]

(C)普通函数 (C)<= (C)<<

(D)友元函数 (D)++ (D)( ) (D)友元函数

2.在下列运算符中,要求用成员函数重载的运算符是( )。 3.在下列运算符中,要求用友元函数重载的运算符是( )。

4.如果希望运算符的操作数(尤其是第一个操作数)有隐式转换,则重载运算符时必须用( )。 (A)构造函数

定义为( )。

(A)构造函数 【解答】

二、程序练习

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:

B

A

(B)析构函数 C

D

C

(C)成员函数

(D)友元函数

(B)析构函数

(C)成员函数

5.当一元运算符的操作数,或者二元运算符的左操作数是该类的一个对象时,重载运算符函数一般

int a, b, c; };

T T::operator* ( T obj ) { T tempobj; = a * ; = b * ; = c * ;

return tempobj; }

int main()

{ T obj1( 1,2,3 ), obj2( 5,5,5 ), obj3; int a, b, c;

obj3 = obj1 * obj2; ( a, b, c );

cout<<\ (obj2*obj3).get( a, b, c );

cout<<\ } 【解答】

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; = + ; = + ;

return tempVector; }

void display()

{ cout << \ } private: int x, y; };

int main()

{ Vector v1( 1, 2 ), v2( 3, 4 ), v3; cout << \ ();

cout << \ ();

v3 = v1 + v2;

cout << \ ();

} 【解答】

同步练习

一、选择题

1.设有类A的对象Aobject,若用成员函数重载前置自增表达式,那么++Aobject被编译器解释为( )。

(A)++()

(B)operator++(Aobject)

(D)Aobject :: operator++() (B)[]和后置++ (D)前置++和[] (B)(表达式表)对象 (D)对象(表达式表)

(C)++(Aobject) (A)+和= (C)=和[]

2.运算符++,=,+和[]中,只能用成员函数重载的运算符是( )。

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

( )。

(A) ()

(B)operator-- (Aobject,0)

(D)-- (Aobject,0)

(C)-- (Aobject,0)

以表示为( )。

(A)operator*++(),k)

(B)operator*(operator++(j),k)

(D)operator*(operator++(j),) (B)(ostream&) (D)(ostream&, constA&)

(C)operator++(j).operator*(k) (A)(constA&)

4.设有类A的对象Aobject,若用友元函数重载后置自减表达式,那么Aobject--被编译器解释为

5.如果表达式++j*k中的++和*都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可

6.如果类A要重载插入运算符<<,那么重载函数参数表的形式一般定义为( )。 (C)(constA&, ostream&)

【解答】

A C D B B D

同步练习

一、选择题

1.类型转换函数只能定义为一个类的( )。 (A)构造函数

(B)析构函数

(C)成员函数

(D)友元函数

2.具有一个非默认参数的构造函数一般用于实现从( )的转换。 (A)该类类型到参数类型 (C)参数类型到基本类型

(B)参数类型到该类类型 (D)类类型到基本类型

3.假设ClassX是类类型标识符,Type为类型标识符,可以是基本类型或类类型,Type_Value为Type类型的表达式,那么,类型转换函数的形式为( )。

(A)ClassX :: operator Type(Type t) { … return Type_Value; } (B)friendClassX :: operator Type() { … return Type_Value; } (C)Type ClassX :: operator Type() { … return Type_Value; } (D)ClassX :: operator Type() { … return Type_Value; } 4.在下列关于类型转换的描述中,错误的是( )。 (A)任何形式的构造函数都可以实现数据类型转换。

(B)带非默认参数的构造函数可以把基本类型数据转换成类类型对象。 (C)类型转换函数可以把类类型对象转换为其他指定类型对象。

(D)类型转换函数只能定义为一个类的成员函数,不能定义为类的友元函数。 5.C++中利用构造函数进行类类型转换时的构造函数形式为( )。 (A)类名::类名(arg); (C)~类名(arg);

(B)类名::类名(arg,arg1=E1,…,agrn=En); (D)~类名(arg,arg1=E1,…,agrn=En);

【解答】 C

二、程序练习

B D A B

1.阅读下面程序,按注释位置指出语句的性质。

#include<>

#include using namespace std; 类类型转换函数 .,argn=En); ClassX::operator Type(); 隐式调用 用类型符显式调用; 自动类型转换时隐式调用 建立对象、参数传递时 需要做数据类型转换时

C++给学生习题第7章练习题

第7章练习题同步练习一、选择题1.在下列运算符中,不能重载的是()。(A)!(B)sizeof(C)new(D)delete2.在下列关于运算符重载的描述中,()是正确的。(A)可以改变参与
推荐度:
点击下载文档文档为doc格式
3wyyr8wtzi072ie1yi364bptb11x4w00mcp
领取福利

微信扫码领取福利

微信扫码分享