最新11级C++综合习题含答案_第1页
最新11级C++综合习题含答案_第2页
最新11级C++综合习题含答案_第3页
最新11级C++综合习题含答案_第4页
最新11级C++综合习题含答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、学习 好资料一、 单项选择题1. 函数重载是指( A )。A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同2. 下列对引用的陈述中不正确的是( C )。A. 每一个引用都是其所引用对象的别名,因此必须初始化B. 形式上针对引用的操作实际上作用于它所引用的对象C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D. 不需要单独为引用分配存储空间3. 关于封装,下列说法中不正确的是(

2、 A )。A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C. 通过封装,每个对象都成为相对独立的实体D. 通过封装,对象的属性都是不可见的4. 假定 AA 为一个类, a 为该类公有的数据成员, px 为指向该类对象的一个指针,则访问 px 所指对象中数据成员 a 的格式为( C )。A. px(a)B. pxaC. px-a D. px.a5. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。A. int AA:a() B. int AA:a()C. AA:a

3、()D. AA:int a()6. 类的构造函数是在定义该类的一个 ( C )时被自动调用执行的。A. 成员函数 B. 数据成员 C. 对象 D. 友元函数7. 在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )A. 派生类的对象可以赋给基类的对象B. 派生类的对象可以初始化基类的引用C. 派生类的对象可以直接访问基类中的成员D. 派生类的对象的地址可以赋给指向基类的指针8. 对于类定义class Apublic:virtual void func1( ) void func2( ) ;class B:public Apublic:void func1( )cout c

4、lass B func 1 end1;virtual void func2( )cout class B func 2 A:func2()和 B:func1()都不是虚函数C、B:fu nc1()是虚函数,而 A:fu nc2() 不是虚函数D、B:func1()不是虚函数,而 A:func2()是虚函数9. 对于 int *pa5; 的描述,( D )是正确的。A、pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素;B、pa 是一个指向某个数组中第 5 个元素的指针,该元素是 int 型变量;C、pa5表示某个数组的第5个元素的值;D、pa 是一个具有 5个元素的指针数组,每

5、个元素是一个 int 型指针;10. 下述静态数据成员的特征中, ( D )是错误的。A、说明静态数据成员时前边要加修饰符 static;B、静态数据成员要在类体外进行初始化;C、引用静态数据成员时,要在静态数据成员名前加和作用域运算符;D、静态数据成员不是所有对象所共用的。11. 以下关于函数模板叙述正确的是( C )。A. 函数模板也是一个具体类型的函数B. 函数模板的类型参数与函数的参数是同一个概念C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数D. 用函数模板定义的函数没有类型12. 下列( B )的调用方式是引用调用。A. 形参和实参都是变量B.形参是指针,实参是地址值A

6、 )。C.形参是引用,实参是变量D.形参是变量,实参是地址值13. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(A. 内联函数B.重载函数C.递归函数 D.函数模板14. 面向对象方法的多态性是指( C )。A. 一个类可以派生出多个特殊类B. 一个对象在不同的运行环境中可以有不同的变体C. 针对一消息,不同的对象可以以适合自身的方式加以响应D. 一个对象可以是由多个其他对象组合而成的15. 在类作用域中能够直接使用该类的( D )成员名进行访问。A. 私有 B. 公用 C. 保护 D. 任何16. 假定一个类 AB只含有一个整型数据成员a,用户为该类定义的带参构造函数

7、可以为( D ) 。A. AB() B. AB(): a(0)C. AB(int aa=0) a=aa; D. AB(int aa) 17. 对于任一个类,用户所能定义的构造函数的个数至多为 ( D )。A. 0 B. 1 C. 2 D. 任意个18. 对类对象成员的初始化是通过构造函数中给出的 ( D )实现的。A. 函数体 B. 初始化表 C. 参数表 D. 初始化表或函数体19. 被非静态成员函数访问的类的数据成员( A )。A. 可以是非静态数据成员或静态数据成员B. 不可能是类的静态数据成员C. 只能是类的非静态数据成员D. 只能是类的静态数据成员20. 引入友元的主要目的是为了(

8、C )。A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性 D. 保证类的封装性 21下面有关重载函数的描述中,正确的是(C )。A) 重载函数必须具有不同的返回值类型B)重载函数形参个数必须不同C)重载函数必须具有不同的形参表D)重载函数名可以不同22假定 MyCIass 为一个类, 那么下列的函数说明中, ( D )为该类的析构函数。A)voidMyClass();B) MyClass(int n);C)MyClass( ); D)MyClass( );23( A )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的 每个对象的类型。242526A)模板B)类

9、C)对象下面关于静态成员函数的途术中错语的是A) 静态成员函数可以有返回值C) 静态成员函数可以具有指针参数 定义类模板时要使用关键字(DA)private B) public下列是重载乘法运算符的函数原型声明,D)函数B )。B) this 指针可以指向静态成员函数D) 静态成员函数可有具有返回值类型 )。C)delete其中错误的是(D)template)。A) MyClass operator*(double,double);B) MyClass operator*(double,MyClass); C ) MyClass operator*(MyClass,double);D ) My

10、Class operator*(MyClass,MyClass);更多精品文档学习 好资料学习-好资料27.以下( CA) virtual int fun(int)C) virtual void fun()=028关于纯虚函数,下列表述中正确的是(A)纯虚函数的声明总是以 =0结束C)含有纯虚函数的类是抽象类29.( C )解决二义性问题。A)能使用作用域分辨操作符C)使用作用域分辨操作符或虚基类 30实现编译时的多态性要使用(AA )重载函数B)析构函数)成员函数表示纯虚函数。B) void fun(int)=0D) virtual void fun(int) A )。B)含有纯虚函数的类可

11、以定义对象D)上面都是错误的B)只能使用虚基类D)上面都不能)C)构造函数D)虚函数更多精品文档31、 C+语言是从早期的 C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法 上进行的最大改进是(B)A、面向过程B、面向对象 C安全性 D复用性32、考虑函数原型 void test(int a,int b=7,char=*),下面的函数调用中,属于不合法调用的 是(C)A、test(5); B、test(5,8); C、test(6,#) D、test(0,0.*);33、 下面有关重载函数的说法中正确的是(C)A、重载函数必须具有不同的返回值类型;B、重载函数形参个数必须不同;C、重载

12、函数必须有不同的形参列表D、重载函数名可以不同;34、 下列关于构造函数的描述中,错误的是(D)A、构造函数可以设置默认参数;B、构造函数在定义类对象时自动执行C、构造函数可以是内联函数;D、构造函数不可以重载35、关于对象概念的描述中,(A )是错误的。A、对象就是C语言中的结构变量;B、对象代表着正在创建的系统中的一个实体;C、对象是一个状态和操作(或方法)的封装体 ;D、对象之间的信息传递是通过消息进行的;36、对于int *pa5;的描述,(D)是正确的。A、pa是一个指向数组的指针,所指向的数组是5个int型元素;B、pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;C

13、、pa5表示某个数组的第5个元素的值;D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针;37、下述静态数据成员的特征中,(D )是错误的。A、 说明静态数据成员时前边要加修饰符 static;B、静态数据成员要在类体外进行初始化;C、引用静态数据成员时,要在静态数据成员名前加类名 和作用域运算符;D、静态数据成员不是所有对象所共用的。38. ( A )是析构函数的特征。A、 一个类中只能定义一个析构函数 ; B、 析构函数与类名不同 ;C、 析构函数的定义只能在类体内 ;D、 析构函数可以有一个或多个参数。39. 已知:p是一个指向类 A数据成员m的指针,A1是类A的一个对象。

14、如果要给m赋值为 5,( C )是正确的。A、 A1.p=5;B、 A1-p=5;C、 A1.*p=5;D、 *A1.p=5;40. 派生类的对象对它的基类成员中( C )是可以访问的。A、公有继承的公有成员 ;B、公有继承的私有成员;C、 公有继承的保护成员;D、 私有继承的公有成员。41. 下列表示引用的方法中,正确的是(A) int m=10; int &x=m;(C) int m=10; int &z;A )。(B) int m=10; int &y=10;(D) int m=10; ifloat &t=&m;42. 下列标识符中, ( C )是文件作用域。(B) 语句标号(D) 自动

15、类标识符(A) 函数形参 (C) 外部静态标识符43. 在程序中,函数声明语句正确位置是 (D )(A) 随便任何位置(B) 不包含在另一函数中的任何位置。(C) 该函数使用前的任何位置(D) 该函数使用前的任何位置,但不包含在另一函数中44. 下面有关函数重载的程序段正确的是(A ) 。(A) int fun(int x, int y); int fun(float x, float y);(B) int fun(int x, int y); int fun(int a, int b);(C) float fun(int x, int y); int fun(int x, int y);(

16、D) int main(); void main();45. 返回类型就是函数返回结果值的数据类型。返回类型可以是(C )(A) 除数组和类以外的任意数据类型(B) 除数组和结构类型以外的任意数据类型(C) 除数组类型以外的任意数据类型(D) 除指针和引用类型以外的任意数据类型46. 下面关于带默认形式参数值的函数声明正确的是(C )。(A) int fun(int a=1, int b, int c); (B) int fun(int a=1, int b=2, int c);(C) int fun(int a, int b=2, int c=3); (D) int fun(int a=1,

17、 int b, int c=3);47.引入内联函数的主要目的是 (B )(A) 缩短程序代码,少占用内存空间(B) 既可以保证程序的可读性,又能提高程序的运行效率(C) 占用内存空间少,执行速度快(D) 使程序的结构比较清晰 48.有关构造函数的说法不正确的是 (D )(A)构造函数名字和类的名字一样(B)构造函数说明类变量时自动执行(C)构造函数无任何函数类型(D)构造函数有且仅有一个49.通常拷贝初始化构造函数的参数是(C )。(A) 某个对象名(B)某个对象的成员名(C) 某个对象的引用名(D)某个对象的指针名50.当保护继承时,基类的 (B)在派生类中成为保护成员,不能通过派生类的对

18、象来直接访问该成员。(A) 任何成员(B) 公有成员和保护成员(C) 保护成员和私有成员(D)私有成员51.当将一个类S定义为另一个类 A的友元类时,类 S的所有成员函数(A )。(A) 可以直接访问类 A 的所有成员(B) 只能访问类 A 的公有成员(C) 不能访问类 A 的私有成员(D)具有类 S 中非继承的成员函数相同的访问权限52.设置虚基类的目的是( B )(A)简化程序(B)消除二义性。(C)提高运行效率(D)减少目标代码53.派生类的对象对它的基类成员中()是可以访问的。(A)公有继承的公有成员(B) 公有继承的私有成员(C) 公有继承的保护成员(D) 私有继承的公有成员54.

19、关于纯虚函数和抽象类的描述中,下面描述错误的是( C )。( A)纯虚函数是一种特殊的函数,它没有具体的实现( B)抽象类是指具有纯虚函数的类( C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类( D)抽象类只能作为基类使用,其纯虚函数的实现由派生类给出55. ( C )是一个在基类中说明的虚函数,它在该类中没有定义,但要求任何派生类都必 须定义自己的版本。(A)虚析构函数(B)虚构造函数(C)纯虚函数(D)静态成员函数二、填空题1 当一个成员函数被调用时,该成员函数的( 函数指针 ) 指向调用它的对象。2 在公有继承的情况下,基类数据成员在派生类中的访问权限( 不变 ) 。3 静

20、态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享 ) 。4 构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个 、 ( 析构函数没有参数 ) 、 析构函数 可以定义为虚函数 。5 C+ 中没有输入输出语句,输入输出是通过输入输出库实现的, 写出一条打印整型变量 n 的输出语句: ( coutn);6 面向对象的程序设计有四大特征,它们是抽象、封装、( 继承 )、 ( 多态 )。7动态联编要满足两个条件,它们是( 被调用的成员函数是虚函数)、 ( 用指针或引用调用虚函数 ) 。8 在 C+ 类中,有一种不能定

21、义对象的类, 这样的类只能被继承, 称之为 ( 抽象类 ) , 定义该类至少具有一个 ( 纯虚函数 ) 。9. 在C+类中,const关键字可以修饰对象和成员函数,const对象不能(赋值),const 成员函数不能 (修改成员数据 ) 。10. 举出 C+ 中两种代码复用的方式: (继承 ) 、 (复用 ) 。11 .对于派生 类的构造函数, 在定义对象时构造函数 的执行顺序为:先执行 调用( 基类 )的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造 函数体中的内容。12 .声明类模板应使用关键字(template)。13 .重载的关系运算符和逻辑运算符的返回类型应当是(boo

22、l 型)。14 .在面向对象方法中,类的实例称为(对象)。15 .在类的对象被释放时, ( 析构函数 )函数会被自动调用。学习-好资料16 .当一个成员函数被调用时,该成员函数的(函数指针)指向调用它的对象。17 .在公有继承的情况下,基类数据成员在派生类中的访问权限( 不变)。18 .静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共享)。19 .构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、(析构函数没有参数)、析构函数可以定义为虚函数 。20 . C+中没有输入输出语句,输入输出是通过输入输出库实现

23、的,写出一条打印整型变量n的输出语句:(coutn );三、综合题1编程题:设计一个立方体类Box,它能计算并输出立方体的体积和表面积。2 :(1)下面程序的打印结果是1251121#i ncudeint f(int);int main() int i;for(i=0;i5;i+) coutv0;i-)k + = i;return k;2)在用class定义一个类时,数据成员和成员函数的默认访问权限是 _private_.(3)含有纯虚函数的类称为_抽象类_ . 已知 intDBL(int n)return n + n;和 longDBL(long n)return n +n;是一个函数模板的两个实例,则该函数模板的定义templateT DBL(T n)return n+n:_.5)在下面程序的横线处填上适当的语句,使该程序执行结果为10.#includeclass MyClass学习-好资料 public:MyClass(int a)x = a;MyClass(int x)this.x=x;int GetNum()return x;II取x值privateint x;int main() MyClass my(10);coutvMY.GETNUM()vvENDL;return 0;3编程实现

温馨提示

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

评论

0/150

提交评论