C++面向对象技术复习题汇总(含答案) 联系客服

发布时间 : 星期三 文章C++面向对象技术复习题汇总(含答案)更新完毕开始阅读e026792d6cdb6f1aff00bed5b9f3f90f76c64d02

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、有关类和对象的说法下列不正确的是( )。 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 class Sample { public:

Sample () { cout << “constructore” << endl; } };

void fn (int i)

{ static Sample c;

cout << “i=” << i << endl; }

void main () { fn (10) ; fn (20) ; }

13. 以下程序的执行结果是_______________。

# include class sample { private: int n;

static int k; public:

sample(int i) { n=i; k++; }; void disp(); };

void sample:: disp ()

{ cout<<\int sample:: k=0; void main ()

{ sample a(10), b(20), c(30) ; a.disp() ; b.disp(); c.disp(); }

14.以下程序的执行结果是_______________

# include class sample { int x; public:

void setx( int i ) { x=i; } int putx( ) { return x; } };

void main ( )

{ sample *p;

sample A [3]; A[0].setx(5); A[1].setx(6); A[2].setx(7);

for (int j=0 ; j<3; j++ ) { p= &A [j] ;

cout<putx( ) << \

}

cout<

15.以下程序的执行结果是_______________

#include class A { public: A( ) {cout<<\ ~A( ) {cout<<\ }; class B { public: B( ) {cout<<\

~B( ){cout<<\ }; main( ) { A a; B b; return 0; }

第四章 派生类与继承

一、选择

1、 从一个基类派生出的各个类的对象之间 (1) 。

A、共享所有数据成员,每个对象还包含基类的所有属性 B、共享部分数据成员,每个对象还包含基类的所有属性 C、不共享任何数据成员,但每个对象还包含基类的所有属性 D、共享部分数据成员和成员函数

2、 C++的继承性允许派生类继承基类的 (2) 。

A、部分特性,并允许增加新的特性或重定义基类的特性 B、部分特性,但不允许增加新的特性或重定义基类的特性 C、所有特性,并允许增加新的特性或重定义基类的特性 D、所有特性,但不允许增加新的特性或重定义基类的特性

3、 对于公有继承,基类的公有和保护成员在派生类中将 (3) 成员。 A、全部变成公有 B、全部变成保护

C、全部变成私有 D、仍然相应保持为公有和保护

4、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为 (4) 的构造函数。

A、自己所属类、对象成员所属类、基类 B、对象成员所属类、基类、自己所属类 C、基类、对象成员所属类、自己所属类 D、基类、自己所属类、对象成员所属类

5、派生类的对象对其基类中 (5) 可直接访问。

A、公有继承的公有成员 B、公有继承的私有成员 C、公有继承的保护成员 D、私有继承的以有成员

6、设类B是基类A的派生类,并有语句:A aa, * pa=&aa; B bb, * pb=&bb; 则正确

的语句是___(6)__ 。

A、pb=pa; B、bb=aa; C、aa=bb; D、*pb=*pa;

7、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 _ (7)__.

A、派生类的对象可以赋给基类的对象 B、派生类的对象可以初始化基类的引用 C、派生类的对象可以直接访问基类中的成员 D、派生类的对象的地址可以赋给指向基类的指针 8、若类X和类Y的定义如下:

class X

{ int a,b; public: