习题2 联系客服

发布时间 : 星期一 文章习题2更新完毕开始阅读884824ef5ef7ba0d4a733bd9

习题二

一、 填空题

1、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为( AB::bb )。

2、若需要把一个函数\F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句( friend void F(); )。

3、静态的成员既可以通过( 类名 )引用,也可以通过( 对象名 )引用。 4、友元的作用是(提高程序的运算效率)。

5、友元函数不是当前类的(成员函数),而是独立于当前类的(外部函数 )。 6、(静态 )成员函数中不能直接引用类中说明的非静态成员。

7、在C++中不用重载就能直接作用于类对象的运算符是( 赋值运算符= )、( 地址运算符& )。

8、C++中不能被重载的运算符有( . )、( .* )、( :: )、( sizeof() )和( ?: )。 9、运算符重载函数一般采用两种形式:重载为类的( 成员函数 )和( 友元函数 )形式。

10、为了区别单目运算符的前置和后置运算,在后置运算符进行重载时,额外添加一个参数,其类型是( int )。

11、静态成员函数要访问非静态成员时,必须通过( 参数传递 )方式到相应的对象,再通过对象来访问。

12、(静态)成员函数中不能直接引用类中说明的非静态成员。

13、静态数据成员进行初始化时必须使用作用域运算符( :: )限制它所属的类。

1

14、如果说明类B是类A的友元类,则类B的所有成员函数都是类A的( 友元函数 )。

15、若Y是X的友元,Z是Y的友元,则Z不一定是X的友元,这种情况说明友元关系是( 不可传递的 )的。

二、 选择题

1、以下关于友元函数的叙述中正确的是( C )。 A. 友元函数的实现必须在类的内部定义 B. 友元函数是类的成员函数

C. 友元函数破坏了类的封装性和隐藏性 D. 友元函数不能访问类的私有成员

2、一个类的友元函数或友元类可以访问该类的( D )。 A. 私有成员

B. 保护成员

C. 共有成员

D. 所有成员

3、下列对静态数据成员的描述正确的是( D )。 A. 静态数据成员不可以被类的对象调用 B. 静态数据成员可以在类体内进行初始化 C. 静态数据成员不能受protected控制符的作用 D. 静态数据成员可以直接用类名调用 4、下面对静态成员的不正确描述是( C )。

A. 静态成员不属于对象,是类的共享成员 B. 静态数据成员要在类外定义和初始化

C. 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

2

D. 静态成员函数可以操作静态数据成员 5、下面对友元的错误描述是( D )。

A. 关键字friend用于声明友元

B. 一个类中的成员函数可以是另一个类的友元函数 C. 友元函数访问对象的成员不受访问特性影响 D. 友元函数通过this指针访问对象成员

6、以下运算符中,不能在C++中重载的是( A )。 A. ?:

B. +

C. -

D. <=

7、下列关于运算符重载的说法错误的是( B )。 A. 运算符重载保持固有的结合性和优先级 B. 可以对C++中的所有运算符进行重载 C. 运算符重载不能改变操作数的个数 D. 在运算符函数中不能使用缺省的参数值

8、为了区别单目运算符的前置和后置运算,在后置运算符进行重载时,额外添加一个参数,其类型是( D )。 A. void

B. char

C. float

D. int

9、已知类A有一个带double型参数的构造函数,且将运算符“+”重载为该类友元函数,若如下语句

A x(2.5),y(3.6),z(0); z=x+y;

能够正常运行,运算符重载函数operator+ 应在类中声明为( D )。 A. friend A operator+ (double , double) ;

3

B. friend A operator+ ( double , A &); C. friend A operator+ ( A &, double); D. friend A operator+ ( A & , A &);

10、C++中对单目运算符进行重载的函数需要传入参数的个数为( A )。 A. 0

B. 1

C. 2

D. 3

11、下列友元关系的描述中正确的是 ( D )。 A. 可以传递 B. 是类与类的关系

C. 是一个类的成员函数与另一个类的关系 D. 友元可以访问该类的所有成员,包括私有成员

12、友元运算符obj1>ojb2被C++编译器解释为( A )。 A. operator>(obj1,obj2) B. >(obj1,obj2) C. obj2.operator>(obj1)

D. obj1.operator>(obj2)

13、下面对静态数据成员的特征中,说法错误的是( B )。

A. 静态数据成员要在类体外进行初始化 B. 静态数据成员不是所有对象所共用的

C.说应用静态成员时,要在静态数据成员名前加<类名>和作用域运算符D.明静态数据成员时前边要加修饰符static

三、 判断题

1、静态数据成员可以通过类名或对象名引用。 对 2、静态数据成员可以在类内或类外进行初始化。 错 3、在静态成员函数中可以访问本类中非静态的数据成员。 对

4