当前位置:首页 > 面向对象程序设计复习题汇总
第三章 类和对象
一、选择题
1、( )不是构造函数的特征。
A、构造函数的函数名与类名相同; B、构造函数可以重载;
C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。 2、下列关于构造函数的描述中,( )是正确的。 A、构造函数可以设置缺省参数; B、构造函数可以被继承;
C、构造函数可以对静态数据成员进行初始化; D、构造函数可以说明为虚函数; 3、( )是析构函数的特征。
A、析构函数可以有一个或多个参数; B、析构函数名与类名不同;
C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数; 4、定义析构函数时,应该注意( )。 A、其函数名与类名完全相同; B、函数返回类型是void类型; C、无形参,也不可重载;
D、函数体中必须有delete语句; 5、下列静态数据成员的特性中,( )是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的;
D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符; 6、友元的作用是( )。
A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类;
7、关于成员函数特征的下列描述中,( )是错误的。 A、成员函数一定是内联函数; B、成员函数可以重载;
C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;
8、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( A、void print() const; B、const void print(); C、void const print(); D、void print(const);
5
)是正确的; 9、在( )情况下适宜采用inline定义内联函数。 A、函数体含有循环语句; B、函数体含有递归语句; C、函数代码小,频繁调用; D、函数代码多,不常调用;
10、假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构
造函数的次数为( )。
A、 3 B、 4 C、 6 D、 9 11、通常拷贝初始化构造函数的参数是( )。 A、某个对象名
B、某个对象的成员名 C、某个对象的引用名 D、某个对象的指针名
12、有关类的说法不正确的是( )。 A、类是一种用户自定义的数据类型
B、只有类中的成员函数才能存取类中的私有数据
C、在类中,如果不作特别说明,所有的数据均为私有类型 D、在类中,如果不作特别说明,所有的成员函数均为公有类型 13、在声明类时,下面说法正确的的是( )。 A、可以在类的声明中给数据成员赋初值 B、数据成员的类型可以是register
C、public, private, protected这三种属性的成员可以按任意顺序出现 D、没有用public, private, protected定义的成员是公有成员
14、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为
5, ( )是正确的。 A、A1.p=5 B、A1->p=5 C、A1.*p=5 D、*A1.p=5
15、已知:类A中一个成员函数说明如下: void Set(A&a); 其中,A&a的含义是( )。 A、指向类A的指针为a
B、将a的地址值赋给变量Set
C、a是类A的对象引用,用来作函数Set()的形参 D、变量A与a按位相与作为函数Set()的参数 16、下列说明中const char *ptr; ptr应该是( )。 A、指向字符型常量的指针 B、指向字符的常量指针 C、指向字符变量的指针 D、指向字符串的常量指针
17、采用函数重载的目的在于:
A、实现共享 B、减少空间
C、提高速度 D、使用方便,提高可读性 18、有关类和对象的说法下列不正确的是( )。
6
A、对象是类的一个实例
B、任何一个对象只能属于一个具体的类 C、一个类只能有一个对象
D、类与对象的关系和数据类型和变量的关系相似 19、有以下类的说明,请指出错误的地方()。 Class CSample {
int a=2.5; A CSample(); B public:
CSample(int val); C ~CSample(); D };
20、在类的定义形式中,数据成员、成员函数和( )组成了类定义体。 A、成员的访问控制信息 B、公有消息 C、私有消息 D、保护消息
二、填空题
1. 通常的拷贝初始化构造函数的参数是_________________ 2. 在C++中函数参数的传递方式有三种,分别是:__________、__________和__________。 3. 任何类中允许有三种访问权限的数据,这三种访问权限分别是__________、__________
和__________。
4. 类中数据成员和成员函数的默认类型为______________
5. 在类内部定义的__________和__________数据不能被不属于该类的成员函数来存取,定
义为__________的数据,可以在类外部进行存取。
6. __________是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员
进行初始化并执行对象的其他内部管理操作。 7. 一个类中有__________个析构函数。
8. __________成员函数中不能直接引用类中说明的非静态成员。 9. 已知类Sample 中的一个成员函数说明如下:
void Set(Sample &a);
其中,Sample &a的含意是_________________
10.静态数据成员属于类,可以使用_______________ 的方式访问静态的数据成员。 11.编译程序将this指针指向_____________。 12.以下程序的执行结果是__________。
#include
Sample () { cout << “constructore” << endl; }
7
};
void fn (int i)
{ static Sample c;
cout << “i=” << i << endl; }
int main ()
{ fn (10) ; fn (20) ; return 0; }
13. 以下程序的执行结果是_______________。
#include
static int k; public:
sample(int i) { n=i; k++; }; void disp(); };
void sample:: disp ()
{ cout<<\int sample:: k=0; int main ()
{ sample a(10), b(20), c(30) ; a.disp() ; b.disp(); c.disp(); return 0; }
14.以下程序的执行结果是_______________
#include
void setx( int i ) { x=i; } int putx( ) { return x; } };
int main ( )
{ sample *p;
sample A [3]; A[0].setx(5);
8
共分享92篇相关文档