复习题
一、全面复习课程内容和所有平时布置的作业、课堂讲过的例题
二、练习下列题型示例。要求掌握各种基本概念和基本原理,学会灵活应用。
1、简要回答下列问题
(1)什么是面向对象的程序设计?
(2)什么是对象?它有哪些特征?什么是类?对象与类的关系是什么?
(3)什么是消息?如何区分公有消息与私有消息?消息具有什么性质?
(4)什么是多态性?在面向对象系统中多态性表现在哪些方面?
抽象类的使用(5)什么是继承性?继承的作用是什么?
(6)C++是如何实现数据封装和信息隐藏的?若类间具有继承关系,则它们之间具有什么特征?
(7)为什么要引入构造函数和析构函数?它们各有什么特性?
(8)this指针的主要作用是什么?静态成员有哪些特性?
(9)使用内部(内置)函数的优点是什么?
(10)假设在程序中已经声明了类point,并建立了其对象p1和p4。请回答以下几个语句有什么区别?
①point p2,p3; ②point p2=p1; ③point p2(p1); ④p4=p1;
(11)友元函数有什么作用?
(12)用成员函数重载运算符和用友元重载运算符,在定义和使用上有什么不同?
(13)什么是重载?函数重载有几种表现形式?
(14)为什么要引入引用概念,在程序设计中它经常被用在什么场合?
(15)简述引用与指针的异同。
(16)派生有几种方式,每种方式中派生类对基类成员的继承性如何?
(17)派生类构造函数和析构函数的构造规则是什么?执行顺序怎样?
(18)什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?
(19)在C++中的何种情况下要引入虚基类?虚基类的构造函数的调用顺序是如何规定的?
(20)保护段成员与公有段成员有何差别?在派生类中如何继承?
(21)什么是虚函数?函数重载与虚函数有哪些异同?
(22)什么是纯虚函数?什么是抽象类?
(23)在什么情况下要引入抽象类?抽象类有什么特点?
(24)什么是多重继承的名字冲突?怎样解决多重继承的名字冲突?
(25)C++中多态性体现在哪几方面?
(26)为什么使用模板?函数模板声明的一般形式是什么?
(27)函数模板与同名的非模板函数重载时,调用的顺序是怎样的?
2、填空
(1)面向对象的程序设计具有 等特征。
(2)构造函数是和 同名的函数。
(3)假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为_______。
(4)类的私有成员只能被它的成员函数和_________访问。
(5)如果类C的一个成员函数访问func( ) 时,无法确定是访问基类A还是基类B,就出现二义性。使用
可以消除二义性。
(6)假定AB为一个类,则语句AB( AB &x );为该类_________构造函数的原型说明。
(7)继承机制的作用是 。
(8)在C++程序中,对象之间的相互通讯通过 实现。
(9)对于任意一个类,析构函数最多可以有 个,而构造函数可以有 个。
(10)如果可以用p . a的形式访问派生类对象p的基类成员a,则a是 成员。
(11)在C++的类中重载二元运算符时,只能指定____个参数。
(12)在C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向的对象的成员所用的运算符是_________。
(13)内部函数是指 函数。
(14)C++中,封装是借助于 达到的。
(15)类型转换函数 参数, 返回类型。
(16)用于类中虚基类说明的关键字是 。
(17)基类的公有成员在派生类中的访问权限由_________决定。
(18)C++支持的两种多态性分别是_________多态性和_________多态性。
(19)面向对象程序设计的 机制提供了重复利用程序资源的一种途径。
(20)允许访问一个类的所有对象私有成员、公有成员和保护成员的函数是该类的 和 。
(21)重载的运算符仍然保持其原来的优先级、结合性和 。
(22)从一个抽象类派生的类必须提供纯虚函数的实现代码,或在该派生类中将它说明为 。
(23)含有纯虚函数的类为__________。
(24)在含有对象成员的派生类中,构造函数的调用次序是 。
(25)当建立_______,程序自动调用该类的构造函数。
(26)定义重载函数时,应在_______上有所不同。
(27)当一个成员函数被调用时,该成员函数的_______指向调用它的对象。
(28)在C++中函数参数传递方式有_______传递和_______传递。
(29)函数的_______性是通过虚函数来实现的。
(30)在删除一个动态对象时,将自动调用该动态对象所属类的 函数。
(31)派生类可以定义其 中不具备的数据和操作。
(32)指向基类对象的指针变量也可以指向 的对象。
(33) 基类的公有成员在私有派生类中是____成员,基类的保护成员在公有派生类中是____ 成员。
3、单项选择题
(1)在C++程序中,对象之间的相互通信通过 。
A、继承实现 B、调用成员函数实现 C、封装实现 D、函数重载实现
(2)友元关系不能 。
A、继承 B、是类与类的关系
C、是一个类的成员函数与另一个类的关系 D、提高程序的运行效率
(3)下面说法正确的是 。
A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C、类的内联函数必须在类体内定义 D、类的内联函数必须在类体外通过加关键字inline定义
(4)假定一个类的构造函数为A( int aa , int bb ){ a = aa - - ; b = a * bb - - ; },则执行A x
( 4 , 5 );语句后,x . a和x . b的值分别为 .
A、4和5 B、5和4 C、4和20 D、20和5
(5)对于类定义
class A {
public: virtual void func1( ){ }
void func2( ){ }
};
class B : public A {
public: void func1( ){ cout << " class B func 1 " << end1; }
virtual void func2( ){ cout << " class B func 2 " << end1; }
};
下面正确的叙述是 。
A、A :: func2( )和B :: func1( )都是虚函数 B、A :: func2( )和B :: func1( )都不是虚函数
C、B :: func1( )是虚函数,而A :: func2( )不是虚函数
D、B :: func1( )不是虚函数,而A :: func2( )是虚函数
(6)在公有继承的情况下,基类成员在派生类中的访问权限 。
A、受限制 B、保持不变 C、受保护 D、不受保护
(7)C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是 。
A、增加了一些新的运算符 B、允许函数重载,并允许设置缺省参数
C、规定函数说明符必须用原型 D、引进了类和对象的概念
(8)下列不是描述类的成员函数的是 。
A、构造函数 B、析构函数 C、友元函数 D、拷贝构造函数
(9)下面有关类说法不正确的是 。
A、一个类可以有多个构造函数 B、一个类只有一个析构函数
C、析构函数需要指定参数 D、在一个类中可以说明具有类类型的数据成员
(10)在类中声明转换函数时不能指定 。
A、参数 B、访问权限 C、操作 D、标识符
(11)在派生类中重新定义虚函数时必须在 方面与基类保持一致。
A、参数类型 B、参数名字 C、操作内容 D、赋值
(12)面向对象的程序设计语言必须具备的关键要素是 。
A、抽象和封装 B、抽象和多态性
C、抽象、封装、继承和多态性 D、抽象、封装和继承性
(13)类的构造函数被自动调用执行的情况是在定义该类的 。
A、成员函数时 B、数据成员时 C、对象时 D、友元函数时
(14)已知类A是类B的友元,类B是类C的友元,则 。
A、类A一定是类C的友元 B、类C一定是类A的友元
C、类C的成员函数可以访问类B的对象的任何成员
D、类A的成员函数可以访问类B的对象的任何成员
(15)若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的 。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论