面向对象程序设计复习试题(答案) 下载本文

word完美格式

}

void main() {

int num=10;

cout<<\ Fun(); {

int num=30;

cout<<\ }

cout<<\}

结果:

The main's num is 10 The Fun's num is20 The Field's num is 30 The main's num is 10

类和对象

2.1选择题

下列的各类函数中,不是类的成员函数。( C )

A)构造函数 B)析构函数 C)友元函数 D)拷贝初始化构造函数 作用域运算符“::”的功能是:( B )

A)标识作用域的级别的 B)指出作用域的范围的 C)给定作用域的大小的 D)标识成员是属于哪个类的

已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。(A)void print()const; B)const void print(); C)void const print(): D)void print(const); 在类定义的外部,可以被访问的成员有( C ) A)所有类成员 B)private的类成员

C)public的类成员 D)public或private的类成员 关于类和对象不正确的说法是:( C )

A)类是一种类型,它封装了数据和操作 B)对象是类的实例

C)一个类的对象只有一个 D)一个对象必属于某个类 在C++中实现封装是借助于( B )

A)枚举 B) 类 C) 数组 D)函数 定义析构函数时,应该注意:( C )

A)其名与类名完全相同 B)返回类型是void类型

C)无形参,也不可重载 D)函数体中必须有delete语句

精心整理 学习帮手

) A word完美格式

类clase CC1的说明如下,错误的语句是:( A ) clase CC1{

int a=2; //(A) CC1(); //(B) public:

CC1(int val); //(C) ~CC1(); //(D) };

类的指针成员的初始化是通过函数完成的,这个函数通常是:( B ) A)析构函数 B) 构造函数 C)其它成员函数 D)友元函数 关于构造函数的说法,不正确的是:( A )

A)没有定义构造函数时,系统将不会调用它 B)其名与类名完全相同 C)它在对象被创建时由系统自动调用 D)没有返回值 通常拷贝构造函数的参数是:( C )

A)对象名 B)对象的成员名 C)对象的引用名 D)对象的指针名 关于成员函数特征的描述中,错误的是:( A )

A)成员函数一定是内联函数 B)成员函数可以重载 C)成员函数可以设置参数的默认值 D)成员函数可以是静态的 下列关于构造函数的描述中,错误的是:( D )

A)构造函数可以设置默认参数; B)构造函数在定义类对象时自动执行 C)构造函数可以是内联函数; D)构造函数不可以重载 有如下类声明“class A{int x; ……};”,则A类的成员x是:( B ) A)公有数据成员 B)私有数据成员 C)公有成员函数 D)私有成员函数 类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:( C ) A)TM * a B)TN & a C)TM a D)TN a; 以下关于this指针的叙述中正确的是:( D )

A)任何与类相关的函数都有this指针; B)类的成员函数都有this指针;

C)类的友员函数都有this指针; D)类的非静态成员函数才有this指针; .关于类模板的说法正确的是:( B ) A)类模板的主要作用是生成抽象类

B)类模板实例化时,编译器将根据给出的模板实参生成一个类 C)在类模板中的数据成员具有同样类型 D)类模板中的成员函数没有返回值

.以下关键字不能用来声明类的访问权限的是:( C ) A)public B)private C)static D)protected

.类的私有成员可在何处访问( D )

A)通过子类的对象访问 B)本类及子类的成员函数中 C)通过该类对象访问 D)本类的成员函数中

.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:( A A)编译器总是自动创建一个不带参数的构造函数 B)这个类没有构造函数 C)这个类不需要构造函数 D)该类不能通过编译

精心整理 学习帮手

) word完美格式

.一个类可包含析构函数的个数是:( B ) A)0个 B)1个 C)0个或1个 D)0个或多个 .一个类可包含构造函数的个数是:( D )

A)0个 B)0个或1个 C)0个或多个 D)1个或多个 .this指针存在的目的是:( B ) A)保证基类公有成员在子类中可以被访问

B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码 C)保证基类保护成员在子类中可以被访问 D)保证基类私有成员在子类中可以被访问 .下列关于类的权限的描述错误的是:( A ) A)类本身的成员函数只能访问自身的私有成员 B)类的对象只能访问该类的公有成员

C)普通函数不能直接访问类的公有成员,必须通过对象访问 D)一个类可以将另一个类的对象作为成员

.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:( B ) A)A类构造函数先执行 B)成员构造函数先执行 C)两者并行执行 D)不能确定

.假定有类AB,有相应的构造函数定义,能正确执行“AB a(4),b(5), c[3] , *p[2]={&a,&b};”语句,请问执行完此语句后共调用该类构造函数的次数为( C )

A)3 B)4 C)5 D)6

拷贝构造函数的作用是( C )。

A. 进行数据类型的转换 B. 用对象调用成员函数

C. 用对象初始化对象 D. 用一般类型的数据初始化对象 下列静态数据成员的特性中,错误的是( D )。

A.静态数据成员的声明以关键字static开头 B. 静态数据成员必须在文件作用域内初始化

C. 引导数据成员时,要在静态数据成员前加(类名)和作用域运算符 D. 静态数据成员不是类所有对象共享的

通过指针访问类对象成员的方法是( D )。

A. :: B. ; C. . D. -> 静态成员函数没有( B )。 A.返回值 B. this指针 C. 指针参数 D. 返回类型

精心整理 学习帮手

word完美格式

在下列关键字中,用于说明类中公有成员的是( A )。

A.public; B.private; C.protected; D.friend 不是构造函数的特征( D )。

A.构造函数的函数名与类名相同; B. 构造函数可以重载;

C. 构造函数可以设置缺省参数; D. 构造函数必须指定类型说明。

是析构函数的特征( A )。

A.一个类中只能定义一个析构函数; B. 析构函数名与类名不同;

C. 析构函数的定义只能在类体内; D. 析构函数可以有一个或多个参数。

关于成员函数特征的下述描述中,( A )是错误的。

A.成员函数一定是内联函数; B. 成员函数可以重载; C. 成员函数可以设置参数的缺省值; D. 成员函数可以是静态的。 下述静态数据成员的特性中,( D )是错误的。 A. 说明静态数据成员时前边要加修饰符static; B. 静态数据成员要在类体外进行初始化;

C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; D.静态数据成员不是所有对象所共用的。

2.2填空题

1、 在撤销类的对象时,C++程序将自动调用该对象的__析构___函数。

2、 类中的构造函数是一个特殊的成员函数,它由类的对象__自动_调用,它的作用是___为对象分配内存,数据成员初始化___。

3、 对类中的成员函数和属性的访问是通过__public__、__protected__和___private__这3个关键字来控制的。

4、 __delete__运算符删除new运算符所动态分配的内存空间。

5、 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为__MyClass()__。

6、 类中构造函数有__一个或多__个,析构函数有___一___个。

7、 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的___数据成员___ ,共同行为被描述为类中的__成员函数__。

8、 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_friend class FriendClass;___。 9、 在结构定义中,数据和成员函数默认权限是__public__。在类定义中,数据和成员函数默认权限是__private___。

10、 在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。 #include class MyClass {

pub1ic:

___ MyClass ( int a ) {_x = a; }____//为x置值 __int GetNum(){ return x; }______ //取x值 private:

精心整理 学习帮手