C++期末考试复习题_第1页
C++期末考试复习题_第2页
C++期末考试复习题_第3页
C++期末考试复习题_第4页
C++期末考试复习题_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、单项选择题 ( 本大题共 10 小题,每小题 2 分,共 20 分)1. 在 C+中,函数原型不能标识 (D )A. 函数的返回类型 B.函数参数的个数 C.函数参数类型 D.函数的功能2. 在 C+程序中,对象之间的相互通信通过 (B )A. 继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现3. 对于任意一个类,析构函数的个数最多为 (B )5. 友元关系不能 (A )A. 继承 B. 是类与类的关系 C.是一个类的成员函数与另一个类的关系 D.提高程序的运行效率6. 语句 ofstream f( ,ios:app ios:binary) ? 的功能是建立流对象 f ,试图

2、打开文件 并与之连接,并且 (A )A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B. 若文件存在,将其置为空文件;若文件不存在,打开失败C. 若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D. 若文件存在,打开失败;若文件不存在,建立一个新文件7. 下面说法正确的是 (B ) A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C. 类的内联函数必须在类体内定义D. 类的内联函数必须在类体外通过加关键字 inline定义以用 的形式访问派生类对象 p 的基类成员 a,其中

3、 a 是(D )A. 私有继承的公有成员 B. 公有继承的私有成员 C.公有继承的保护成员 D.公有继承的公有成 员公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 ( C)A. 派生类的对象可以赋给基类的对象B. 派生类的对象可以初始化基类的引用C. 派生类的对象可以直接访问基类中的成员D. 派生类的对象的地址可以赋给指向基类的指针于类定义class A public:virtual void func1( ) void func2( ) ?class B:public Apublic:void func1( )cout class B func 1end1? virtual

4、void func2( )coutclass B func 2end1? ?面正确的叙述是 (C )A. A:func2( ) 和 B:func1( )都是虚函数 B. A:func2( )和 B:func1( ) 都不是虚函C. B:func1( ) 是虚函数,而 A:func2( ) 不是虚函数 D. B:func1( ) 不是虚函数,而 A:func2( ) 是虚函数 第二部分非选择题 ( 共 80 分)二、填空题 ( 本大题共 10 小题,每小题 2 分,共 20 分)11. 定义类的动态对象数组时, 系统只能够自动调用该类的 _无参 构造函数对其进行初始化。12. 在 C+程序设计中

5、,建立继承关系倒挂的树应使用 单_一继承。13. 表达式 coutend1 还可表示为 cout_。20. 派生类从一个或多个以前定义的该类的 _基类 _ 一、单项选择题(每题 2分,共 20 分)1. 派生类对象可访问基类中的什么成员 ( A)A.公有继承的公有成员B. 公有继承的私有成员C. 公有继承的保护成员D.私有继承的公有成员2. 定义析构函数时,应该注意 ( C )A. 其名与类名完全相同B.返回类型是 void 类型C.无形参,也不可重载D.函数体中必须有 delete 语句3. 如果类 A被说明成类 B的友元,则 ( D)。A.类 A的成员即类 B的成员B. 类 B的成员即类

6、A的成员C.类 A 的成员函数不得访问类 B的成员D.类 B 不一定是类 A的友元4. 应在下列程序划线处填入的正确语句是( C )#includeclass Base public:void fun()coutBase:funfun();5. 面向对象程序设计将数据与 (A ) 放在一起,做为一个相互依存、不可分割的整体来处理数据隐藏 D. 数据抽象6. 在类中声明转换函数时不能指定 (A ) 。B. 访 问 权 限A. 参 数作D. 标识符C.A. 对数据的操作 B. 信息7. 在派生类中重新定义虚函数时必须在 (C. 操A. 参数类型A) 方面与基类保持一致B. 参数名字 C. 操作内容

7、D.赋值8. 下面关于 C+中类的继承与派生的说法错误的是( C )。A基类的 protected 成员在公有派生类的成员函数中可以直接使用 B基类的 protected 成员在私有派生类的成员函数中可以直接使用 C公有派生时,基类的所有成员访问权限在派生类中保持不变D基类的 protected 成员在保护派生类的成员函数中可以直接使用9.重载赋值操作符时,应声明为 (C) 函数。A.友元B. 虚C. 成员D. 多态10.语句ofstream f( ,ios:app ios:binary);的功能是建立流对象f ,试图打开文件并与之连接,并且 ( A)A. 若文件存在,将文件写指针定位于文件尾

8、;若文件不存在,建立一个新文件B. 若文件存在,将其置为空文件;若文件不存在,打开失败C. 若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D. 若文件存在,打开失败;若文件不存在,建立一个新文件 二、填空题(每空 2分,共 30 分)1. 假定 AB 为一个类,则语句 AB(AB&x) ;为该类 复制 构造函数的原型说明。2. C+ 支持的两种多态性分别是 编译时的_ 多 态性和 运行时的 多态性。3. 定义类的动态对象数组时,系统只能够自动调用该类的 无参的 构造函数对其进行初始化4. 运算符重载时,其函数名由 _ operator 运算符 _ 构成。成员函数重载双目运算

9、符时, 左操作数是_当前对象_,右操作数是 _函数形参_。C+标准库中的异常层次的根类为 exception _ 类; MFC类库中绝大多数类都源自根类 _CObject _ 类。在下面横线处填上适当字句,完成类中成员函数的定义。 class Aint * a;public:A(int aa=0) a=_ new int(aa); 在下面选项中,对类的拷贝构造函数的声明形式是( B)A. A:A(&)B. A:A(constA&) C. A:A(A) D. void A:A(A&a)2. 下面关于成员函数特征的描述中,错误的是( A )A成员函数不可以设置参数的默认值 B 成员函数可以重载 C

10、成员函数可以是内联函数 D成员函数可以是静态的3. 下面关于类模板叙述不正确的是( B )A可以有多个构造函数 B. 类模板是模板类的实例 C. 一个类模板可以用来实例化多个模板 类 D. 类模板可以有多个参数4. 要使一个类成为抽象类,这个类应具有的条件是( A )A至少有一个纯虚函数B. 至少有一个虚函数 C. 只含有一个纯虚函数 D. 只含有一个虚函数5. 有关运算符重载正确的描述是( D )A. C+语言允许在重载运算符时改变运算符的操作个数B. C+语言允许在重载运算符时改变运算符的优先级C. C+语言允许在重载运算符时改变运算符的结合性D. C+语言允许在重载运算符时改变运算符的原

11、来的功能6. 下列说法正确的是( D )。A. 一个类的对象可以是另一个类的成员 B.C. 一个类可以在另一个类定义体进行定义7. 有如下程序: #include class BASE char c; public:BASE(char n):c(n) virtualBASE()coutc; ;class DERIVED:public BASEchar c; public:DERIVED(char n):BASE(n+1),c(n) DERIVED()coutSetValue(5) 与(5) 等价9. 下列各类函数中, C 不是类的成员函数。A. 构造函数 B. 析构函数 C. 友元函数 D.

12、拷贝构造函数10. 派生类的对象对它的基类成员中 A 是可以访问的。A. 公有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的保护成员 D. 私有继承 的公有成员二、填空题(每空 2分,共 30 分)1. 定义内 联函数所 用的关键 字inline ,定义友 元所用的关 键字为friend 。2. 当一个派生类具有多个基类时,这种继承方式称为 _ 多重继承 _ 。3. 通过一个构造函数调用虚函数时, C+系统对该调用采用静态 联编。4. 任何类中允许有 _privated_ _、public_ _、_protected 三种访问控制类型的成员,数据成员和成员函数的默认类型为 _pri

13、vated _。5. 只有在 公有 继承的情况下,基类和派生类之间才有赋值兼容性规则。6. C+ 标准库中的异常层次的根类定义在库的头文件 _ 中。7. 运算符重载使用的两种方式是 成员函数 和友元函数 。8. C+支持面向对象程序设计的四个要素是:抽象性、 多态性、封装性和继承性 。一、单项选择题(每题 2分,共 20 分)1. 下面有关构造函数和 new运算符关系正确的说法是( D ) A new运算符不调用构造函数 B. 构造函数一定调用 new运算符 C当生成新类的实例时,先调用 new运算符,然后调用构造函数进行初始化D. 当 new运算符动态产生类的对象时, new运算符也自动调用

14、构造函数2. 下面有关类性质的说法错误的是( D )A. 一个类可以有多个构造函数, 但只有一个析构函数B. 析构函数和构造函数都不能有返C.不能给析构函数指定参数D.一个类中不可以声明具有类类型的数据成员3. 下面关于友元函数描述正确的是( C )A友元函数是类的成员 B友元函数在类的外部声明 C友元函数在类中声明 D. 友元函数 能够派生4. 下面叙述正确的是( D )A. 派生类不可以使用私用派生 B. 保护派生时,基类的保护成员在派生类中是公有的C. 对基类成员的访问允许二义性 D. 赋值兼容规则也适用于多重继承的组合5. 有关运算符重载正确的描述是( D )A. C+语言允许在重载运

15、算符时改变运算符的操作个数B. C+ 语言允许在重载运算符时改变运算符的优先级C. C+语言允许在重载运算符时改变运算符的结合性D. C+语言允许在重载运算符时改变运算符的原来的功能6. 下面描述中,表达错误的是( B ) ?A. 公有继承时基类中的 public 成员在派生类中仍是 public 的 B. 公有继承是基类中的 private 成员在派生类中仍是 private 的C. 公有继承时基类中的 protected 成员在派生类中仍是 protected 的D. 私有继承时基类中的 public 成员在派生类中是 private 的7. 拷贝构造函数的参数是( )A. 某个对象名 B

16、. 某个对象的成员名 C. 某个对象的引用名 D. 某个对象的指针名8. 下列关于构造函数的描述中,错误的是( )A构造函数可以设置默认参数 B. 构造函数在定义类对象时自动执行 C构造函数可以是内 联函数 D.构造函数不可以重载9. 数组作为函数的形参时,把数组名作为实参,传递给函数的是( ) A该数组的首地址 B该数组的元素个数 C该数组中的各元素值 D 该数组的大小10. 通过一个析构函数调用虚函数时, C+系统对该调用采用 ( ) 。A. 动态联编 B. 静态联编 C. 不确定是哪种联编 D. 函数重载二、填空题(每空 2分,共 30 分)1成员名限定的符号是: ,它可以在引用成员时避

17、免 二义性 。2只有在公有 继承的情况下,基类和派生类之间才有赋值兼容性规则。3. 模板分为 类 模板和 函数 模板。4. 在用 class 定义一个类时,数据成员和成员函数的默认访问权限是 。5. 已知 int DBL(int n)return n+n;和 long DBL(long n)return n+n; 是一个函数模板的两个实例,则该函数模板的定义是 ( ) 。(要求写出函数模板的完整定义)6. 静态数据成员必须在类外进行初始化。7. 含有纯虚函数的类称为抽象类 。8. 若 Queue是一个类,aQueue是它的一个对象, 而且该类中定义了一个静态成员函数 show() 则在类外对

18、该成员的函数进行调用 的方式可 以为 () 和 Queue:show() 。9. 定义内联函数所用的关键字为 ,定义友元所用的关键字为 10. 使用成员函数重载运算符时, 若运算符是二元的, 则参数表中有 个操作数, 此 时 当前对象 作为此运算符的左操作数。一、单项选择题(每题 2分,共 20 分)1. 下面有关重载函数的说法中正确的是( C ) A重载函数必须具有不同的返回值类型;B重载函数形参个数必须使用 string 类建立对象的不正确方式是( D)。A. string str( “OK”) ; B. string str= ”OK”; C. string str ; D. strin

19、g str= OK;3. 面关于 C+中类的继承与派生的说法错误的是 ( C)A基类的 protected 成员在公有派生类的成员函数中可以直接使用B基类的 protected 成员在私有派生类的成员函数中可以直接使用 C私有派生时,基类的所有成员访问权限在派生类中保持不变 D继承可以分为单一继承与多重继承4. 面向对象程序设计将数据与 (A ) 放在一起,作为一个相互依存、不可分割的整体来 处理。A. 对数据的操作 B. 信息 C. 数据隐藏 D. 数据抽象5. 一个类的析构函数 A 。A. 唯一的B. 允许重载 C. 至多可有两个 D. 只能是缺省的6. 下列各类函数中, ( C ) 不是

20、类的成员函数。A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数7. 在下面选项中,对类的拷贝构造函数的声明形式是( B )A A:A(&)B. A:A(constA&) C. A:A(A) D. void A:A(A&a)8. 下面关于静态成员描述正确的是( B )A. 静态成员是对象的数据成员 B. 静态成员是对象的成员 C. 静态成员是对象的成员函数 D. 静态成员不是对象的成员9. 下面关于成员函数特征的描述中,错误的是( A )A成员函数不可以设置参数的默认值 B 成员函数可以重载 C成员函数可以是内联函数 D成 员函数可以是静态的10. 下面叙述正确的是( D )A

21、基类的保护成员在派生类中仍然是保护的B 基类的公有成员在派生类中仍然是公有的C基类的私有成员在派生类中是私有的D从基类派生时,可以有 3 种派生方法1. class base int a;public:int b;int f(int i,int j);class derive:baseint c;public:int base:b; base:f(int i,int j);122. #include class Apublic:void A(int i=0)m=i;void show()coutm;void A()private:int m; ;void main()A a(5);+=10;(

22、);3453. #include using namespace std; class base int a;static int b;public:getb()endl;base(int m,int n):a(m),b(n) static int geta()return a; static int getb()return b; void show()coutgeta() ;base:int b=45; void main() 6 7 81 int base:b;2 base:f(int i,int j);1 base:b; (或访问声明仅仅调整名字的访问,不可为它说明任何类型)2 bas

23、e:f; (或访问声明不应说明函数参数)3 void A(int i=0)m=i;4 void A()5 +=10;3 构造函数去掉 void (或构造函数不能指定返回值类型)4 析构函数去掉 void (或析构函数不能指定返回值类型)5 对象不能访问私有成员6 base(int m,int n):a(m),b(n)7 static int geta()return a;8 base:int b=45;6 不能通过构造函数初始化静态数据成员(只要把 b(n) 去掉即可)7 静态成员函数中不能引用非静态成员数据成员(或去掉 static )8 int base:b = 45;1. Templat

24、eT fun(T x)T y;y=T-2*x;retrun y;122. class basepublic:f();f(int a);f(char *p);class derive:basepublic:void f(int s);base:f;3. #include class A public:void setA(int);void showA();private:int a;class B public:void setB(int);void showB();private:int b;class C : public A, private B public:void setC(int,

25、 int, int);void showC();private:int c;void A:setA(int x) a=x; 1 Template2 y=T-2*x;1 改为 template2 T 不能用作 - 的操作数3 base:f;3 派生类中具有与基类同名的函数,则基类中的此函数不能在派生类中进行访问声明4 a=x;5 b=y;6 (6);7 ();8 return 0;4 派生类不能访问基类 A 类的私有成员5 派生类不能访问基类 B 类的私有成员6 不能访问 B 类的公有成员 setB7 不能访问 B 类的公有成员 showB8 去掉此语句,或主函数的返回值 void 去掉或改为

26、int一、填空(每题 2分,共 20 分)1、C+程序中,对象的初始化和清理工作,分别由两个特殊的成员函数()和()来 完成。2、在 c+中,分别用(变量)与(函数)来表现某种事物的所具有的属性和行为,并 且将它们封装在一起,形成一种抽象数据类型类。3、当用一个对象初始化另一个新的同类对象,将调用() ,其特殊之处在于:形参是 ()。4、模板是 C+支持参数化的工具,我们通常用类模板和函数模板,这些只是面向对象的()性的一个方面。5、如果在某个类定义中用关键字 ()声明了一个外部函数 (也许是其他类的一个成员) 后,这个外部函数就可以例外的访问该类的任何成员,这个外部函数称为类的()函 数。6

27、、可以将类的成员声明为 static ,使其成为()。这样的成员在编译时被创建,其实 例只有一个,为所有该类的对象() 。7、()是动态动态联编的基础。它是非静态的成员函数,经过()之后,在类族中可 以实现运行过程中的多态。8、程序中有如下语句:int a=30;int b=a+;int c=+a;则 b=( ),c= ()9、数组 A2020 中,第一个元素是() ,最后一个元素是()10、声明一个 int 型指针,请为其动态分配含 10 个元素的地址空间: ( ) 。二、程序分析( 30 分) 1、分析程序,写出程序的输出结果( 7 分) 。#includeclass Clockpriva

28、te:int Hour,Minute,Second;public:void SetTime(int NewH=24,int NewM=24,int NewS=24) Hour=NewH;Minute=NewM;Second=NewS;void ShowTime()coutHour ”: ”Minute”: ”Secondendl; ;void main()cout ”time set and output:”endl;Clock MyClock;();();(8,30,30);();2、分析程序,写出程序的输出结果( 7 分)。#includeclass pointprivate:int x,

29、y;构造函数被调用”endl;public:point(int xx=0,int yy=0)x=xx;y=yy;cout point(point &p);int GetX()return x;int GetY()return y; ;point:point(point &p) x=;y=;cout ”拷贝构造函数被调用” endl; void main() point A(4,5); point B(A); cout()endl;3、在括号中注释相应的语句( 8 分)delete pa;/()4、注释下列语句( 8 分)#include #include #includevoid main()cha

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论