C++OOP复习题-本部(to学生)

2019-01-26 13:35

C++面向对象程序设计——复习

1. 名词解释

1、 类(Class):人们借助于客观存在的事物的属性和行为认识客观世界,将具

有相同属性和行为的客观对象归为同一类。类是面向对象程序设计的核心,是一种有别于普通数据类型的自定义数据类型。是实现数据封装和信息隐藏的工具,是继承和多态的基础。

2、 对象(Object):参考答案:每类对象都有很多实际存在的个体,这些个体

成为对象。面向对象程序设计中,对象是由类定义出来的变量。类与对象是数据类型与变量的关系,类相当于一种数据类型,对象是用数据类型定义的变量。

3、 抽象(Abstract):是指有意忽略问题的某些细节和与当前目标无关的方面,

以便把问题的本质表达得更清楚。

4、 接口(Interface):程序设计中,对用户可见、用户能够用来完成某项任务的

部分称为接口。

5、 实现(Implementation):程序设计中,那些对用户不可见、具体完成工作任

务的细节称为实现。

6、 封装(Encapsulation):是指将数据抽象的外部接口与内部实现细节分离开

来,将接口显示给用户并允许其访问,将接口的实现细节隐藏起来,不让用户知道,也不允许用户访问。

7、 继承(Inheritance):继承源于生物界,通过继承,后代能够获得与其祖先相

同或相似的特征和能力。面向对象程序设计语言提供了类似于生物继承的语言机制,允许一个新类从现有类派生而来,新类能够继承现有类的属性和行为,并且能够修改或增加新的属性和行为,成为一个功能更强大、更能满足应用需求的类。继承是面向对象程序设计语言模拟生物界后代传承前代的特征和行为的一种机制,其基于一个已有的类创建新类,使新类与已有类具有同样的功能,即新类具有已有类相同的数据成员和成员函数。

8、 多态(Polymorphism):是面向对象程序设计语言的一个重要特征,是指不

同对象收到相同的消息时会执行不同的操作(或产生不同的行为),通俗地说,是指用一个相同的名称定义许多不同的函数,这些函数可以针对不同数据类型实现相同或相似的功能,即所谓的“一个接口多种形态(实现)”。 9、 类型转换:是指将一种数据类型转换为另一种数据类型。可分为隐式类型转

换和显示类型转换。

10、函数重载:是指允许同一作用域内定义多个同名函数,这些同名函数可以有

不同的返回类型、参数类型、参数个数、以及不同的函数功能。

11、引用(Reference):是某个变量(面向对象中则为对象)的别名,即某个对

象的替代名称,相当于变量的第二名称。

12、内联函数():在函数声明或定义时,将inline关键字加在函数返回类型前

面的函数称为内联函数。

13、指针悬挂():在面向对象程序设计中,默认拷贝构造函数以成员按位复制

(bit-by-bit)的方式实现成员的复制。按位复制是指把一个对象的各数据成员的值原样复制到目标对象中。在没有涉及指针类型的数据成员时,默认拷贝构造函数能够很好地工作,但当一个类有指针类型的数据成员时,默认拷贝构造函数常常会产生指针悬挂问题。在没有涉及指针类型的数据成员时,默认拷贝构造函数能够很好地工作,但当一个类有指针类型的数据成员时,默认拷贝构造函数将指针值复制给拷贝对象,使得多个对象的该指针指向同一内存存储区域,删除某个对象将回收该对象内指针所指向的该存储单元,这将导致其它对象内的该指针仍指向先前已经被删除的存储区域,这就是所谓的“指针悬挂”。

14、全局命名空间污染问题:如果在程序中引入一个系统或第三方软件商提供的

库文件,就必须保证程序中定义的全局名(包括变量、函数、类型等的名称)都不能与所用库中的名称相同;如果一个程序由许多程序员共同编写,大家也不能命名相同的全局变量名和函数名,否则将产生名字冲突,这就是所谓的全局命名空间污染问题。

15、作用域:是指标识符在程序中的有效范围。这里的标识符包括变量名、函数

名、常量名、对象名、语句标号、宏名等。

16、生命(周)期:是指标识符在程序中的生存周期,也就是程序运行过程中,

标识符在内存中存在的时间。这里的标识符包括变量名、函数名、常量名、对象名、语句标号、宏名等。

17、构造函数(Constructor):是与类同名的特殊成员函数,主要用来初始化对

象的数据成员。

18、析构函数(Destructor):是与类同名的另一个特殊成员函数,作用与构造函

数相反,用于对象生存期结束时,完成对象的清理工作。

19、友元:C++提供了友元机制,用于允许一个类授权其他函数直接访问类中的

私有(Private)和受保护(Protected)成员。友元包括友元函数、友元类和友元成员函数。

20、重定义:是指面向对象程序设计的继承结构中,派生类可以定义与基类具有

相同函数原型的成员函数,即具有相同的返回类型、函数名及参数列表。而重载则要求成员函数具有不同的函数原型。

21、名字隐藏:是指面向对象程序设计的继承结构中,派生类对基类成员函数的

重定义或重载会影响基类成员函数在派生类中的可见性,基类的同名成员函数会被派生类的同名函数所隐藏。

22、赋值相容:是指在公有派生方式下,凡是需要基类对象的地方都可以使用派

生类对象。即基类对象能够解决的问题,用派生类对象也能够解决,包括三种情况:(a)把派生类对象赋值给基类对象;(b)把派生类对象的地址赋值给基类指针;(c)用派生类对象初始化基类对象的引用。

23、虚拟继承:利用C++提供的关键字virtual限定继承方式,将公共基类指定

为虚基类,以使该基类的成员在派生类中只有一份拷贝,此继承方式称为虚拟继承。

24、绑定(Binding),又称为联编,是指一个源程序需要经过编译、连接才能形

成可执行文件,在这个过程中需要把调用函数名与对应的函数关联在一起,这个过程称为绑定。

25、静态绑定,又称为静态联编,是指在编译程序时就根据调用函数提供的信息,

把它所对应的具体函数确定下来,即在编译程序时就把调用函数名与具体的函数绑定在一起。

26、动态绑定,又称为动态联编,是指在编译程序时还不能确定函数调用所对应

的具体函数,只有在程序运行过程中才能够确定函数调用所对应的具体函数,即在程序运行时才把调用函数名与具体函数绑定在一起。

27、虚函数:由限定词virtual修饰的类成员函数称为虚函数。如果基类中的非

静态成员函数被定义为虚函数,且当派生类重写(重定义)了基类的虚函数,则当通过指向基类对象的指针或引用调用派生类对象中的虚函数时,将会调用到该指针或引用实际所指对象的成员函数。

28、纯虚函数:是指在函数声明时被初始化为0的类成员函数。

29、抽象类:在一个类中可以声明一个或多个纯虚函数,只要有纯虚函数的类称

为抽象类。至少有一个纯虚函数的类称为抽象类。

30、运行时类型信息(RTTI,Run-Time Type Information):提供了在程序运行时

刻确定对象类型的方法,是面向对象程序语言为解决多态问题而引入的一种语言特性。

2. 单选题

1、 C++程序的基本组成单位是( )。 A. 字符 B. 语句

C. 函数

D. 源程序文件

2、 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )

符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 3、 x>0 && x<=10的相反表达式为( )。 A. x<=0 || x>10 B. x<=0 && x>10 C. x<=0 || x<=10 D. x>0 && x>10

4、 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,

应使用语句( )。

A. delete p; B. delete *p;

C. delete &p; D. delete []p;

5、 函数原型语句正确的是( )。

A. int Function(void a); C. int Function(a);

B.void Function (int);

D.void int(double a);

D. lik

6、 C++源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj 7、 采用重载函数的目的是( )。 A. 实现共享 C. 提高速度

B. 减少空间

D. 使用方便,提高可读性

8、 面向对象方法的多态性是指( )。 A. 一个类可以派生出多个特殊类 B. 一个对象在不同的运行环境中可以有不同的变体 C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的 9、 在关键字public后面定义的成员为类的( )成员。 A. 私有 B. 公有 C. 保护 10、面向对象软件开发中使用的OOD表示( )。 A. 面向对象分析 B. 面向对象设计 C. 面向对象语言 D. 面向对象方法

11、假定AA为一个类,int a()为该类的成员函数,若该成员函数在类定义体外

定义,则函数头为( )。 A. int AA::a() B. int AA:a() C. AA::a() D. AA::int a() 12、假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 13、设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动

调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 拷贝构造函数 14、假定AB为一个类,则执行“AB a(2), b[3], *p[4];”语句时共调用该类构造

函数的次数为( )。 A. 3 B. 4 C. 5 D. 9 15、当保护继承时,基类的( )在派生类中成为保护成员,在类作用域外不

能够通过派生类的对象来直接访问该成员。 A. 任何成员 B.公有成员和保护成员 C. 保护成员和私有成员 D.私有成员 16、在关键字private后面定义的成员为类的( )成员。 A. 私有 B. 公用 C. 保护

D. 任何 D. 任何

17、对类中常量成员的初始化是通过构造函数中给出的( )实现的。 A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体

18、结构中定义的成员默认为( )访问属性。 A. public B. private C. protected 19、类中定义的成员默认为( )访问属性。 A. public B. private C. protected 20、一个类的构造函数通常被定义为该类的( )成员。 A. 公有 B. 保护 C. 私有

D. friend D. friend D. 友元

21、在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于

( )中。 A. 主文件 B. 实现文件 C. 库文件 D. 头文件 22、假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个

参数为( )。 A. abc B. *this C. this D. this& 23、对于一个类的析构函数,其函数名与类名( )。 A. 完全相同 B. 完全不同 C. 只相差一个字符

D. 无关系

24、假定AB为一个类,则执行“AB x;”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 25、假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,

系统为该类定义的无参构造函数为( )。 A. AB() {a=0;} B. AB(int aa=0): a(aa) {} C. AB(int aa): a(aa) {} D. AB() {} 26、假定有“struct BOOK{char title[40]; float price;}book;”,则正确的语句为

( )。 A. BOOK &x= &book; B. BOOK &x=book; C. BOOK &x=new BOOK; D. BOOK &x=BOOK; 27、假定AB为一个类,则执行 “AB a, b(3), *p;”语句时共调用该类构造函数

的次数为( )。 A. 2 B. 3 C. 4 D. 5 28、对类对象成员的初始化是通过构造函数中给出的( )实现的。 A. 函数体 B. 初始化表 C. 参数表 D. 初始化表或函数体 29、一个类的静态数据成员所表示属性( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性

30、当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够

直接访问类B的( )。 A. 只能是公有成员 B. 只能是保护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员 31、类的静态成员的访问控制( )。

A. 只允许被定义为private B. 只允许被定义为private或protected

C. 只允许被定义为public D. 可允许被定义为private、protected或public 32、对于公有继承,基类中的私有成员在派生类中将( )。


C++OOP复习题-本部(to学生).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年保定市房地产开发企业名录712家

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: