版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、选择题1.在C+中,函数原型不能标识( D )A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能2.在C+程序中,对象之间的相互通信通过( B )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现3.对于任意一个类,析构函数的个数最多为( B ) A.0 B.1 C.2 D.3 4.友元关系不能( A )A.继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率5.语句ofstream f(SALARY.DAT,ios:appios:binary)的功能是建立流对象f,试图打开文件SALARY.DAT 并与之连接,并且( A )A.若文件存
2、在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件6.下面说法正确的是( B )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义 D.类的内联函数必须在类体外通过加关键字inline 定义7.可以用p.a 的形式访问派生类对象p 的基类成员a,其中a 是( D )A.私有继承的公有成员B.公有继承的私
3、有成员C.公有继承的保护成员D.公有继承的公有成员8.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )A.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针9. 派生类对象可访问基类中的什么成员( A )A.公有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员
4、60; D.私有继承的公有成员10. 定义析构函数时,应该注意(C)A.其名与类名完全相同 B.返回类型是void类型 C.无形参,也不可重载 D.函数体中必须有delete语句11. 如果类A被说明成类B的友元,则( D )。
5、60;A.类A的成员即类B的成员 B.类B的成员即类A的成员 C.类A的成员函数不得访问类B的成员 D.类B不一定是类A的友元 12. 面向对象程序设计将数据与( A )放在一起,做为一个相互依存、不可分割的整体来处理。A. 对数据的操作 B. 信息 C. 数据隐藏 D. 数据抽象13. 在类中声明转换函数时不能指定( A )。A. 参数 B. 访问权限 C. 操作 D. 标识符
6、60; 14. 在派生类中重新定义虚函数时必须在( A )方面与基类保持一致。 A. 参数类型 B. 参数名字 C. 操作内容 D. 赋值15. 下面关于C+中类的继承与派生的说法错误的是( C )。A基类的protected成员在公有派生类的成员函数中可以直接使用B基类的protected成员在私有派生类的成员函数中可以直接使用C公有派生时,基类的所有成员访问权限在派生类中保持不变D基类的protected成员在保护派生类的成员函数中可以直接使用16. 重
7、载赋值操作符时,应声明为( C )函数。 A. 友元 B. 虚 C. 成员 D. 多态17. 在下面选项中,对类的拷贝构造函数的声明形式是(B)A. A:A(&) B. A:A(const A&) C. A:A(A) D. void A:A(A&a)18. 下面关于成员函数特征的描述中,错误的是(A)A成员函数不可以设置参数的默认值 B成员函数可以重载C成员函数可以是内联函数D成员函数可以是静态的19. 下面关于类模板叙述不正确的是( B )
8、A可以有多个构造函数 B. 类模板是模板类的实例C. 一个类模板可以用来实例化多个模板类 D. 类模板可以有多个参数20. 要使一个类成为抽象类,这个类应具有的条件是(A)A至少有一个纯虚函数 B. 至少有一个虚函数C. 只含有一个纯虚函数 D. 只含有一个虚函数21. 有关运算符重载正确的描述是( D )A. C+语言允许在重载运算符时改变运算符的操作个数 B. C+语言允许在重载运算符时改变运算符的优先级C. C+语言允许在重载运算符时改变运算符的结合性 D. C+语言允许在重载运算符时改变运算符的原来的功能22. 下列说法正确的是( D )。A. 一个类的对象可以是
9、另一个类的成员 B. 一个类可以作为另一个类的派生类C. 一个类可以在另一个类定义体进行定义 D. 以上说法均正确23. 下列各类函数中,(C)不是类的成员函数。A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数24. 派生类的对象对它的基类成员中( A )是可以访问的。A. 公有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的保护成员 D. 私有继承的公有成员25. 下面有关构造函数和new运算符关系正确的说法是( D )Anew运算符不调用构造函数 B. 构造函数一定调用new运算符C当生成新类的实例时,先调用new运算符,然后调用构造函数进行初始化D.
10、 当new运算符动态产生类的对象时,new运算符也自动调用构造函数26. 下面有关类性质的说法错误的是( D ) A.一个类可以有多个构造函数,但只有一个析构函数 B.析构函数和构造函数都不能有返回类型C.不能给析构函数指定参数 D.一个类中不可以声明具有类类型的数据成员27. 下面关于友元函数描述正确的是(C)A友元函数是类的成员B友元函数在类的外部声明C友元函数在类中声明D. 友元函数能够派生28. 下面叙述正确的是( D ) A. 派生类不可以使用私用派生 B. 保护派生时,基类的保护成员在派生类中是公有的C. 对基类成员的访问允许二义性 D. 赋值兼容规则也适用于多重继承的组合29.
11、下面描述中,表达错误的是( B ) A. 公有继承时基类中的public成员在派生类中仍是public的B. 公有继承是基类中的private成员在派生类中仍是private的 C. 公有继承时基类中的protected成员在派生类中仍是protected的D. 私有继承时基类中的public成员在派生类中是private的30. 拷贝构造函数的参数是( )A. 某个对象名 B. 某个对象的成员名 C. 某个对象的引用名 D. 某个对象的指针名31.下列关于构造函数的描述中,错误的是( )A构造函数可以设置默认参数 B. 构造函数在定义类对象时自动执行C构造函数可以是内联函数D. 构造函数不可
12、以重载32. 数组作为函数的形参时,把数组名作为实参,传递给函数的是( )A该数组的首地址 B该数组的元素个数C该数组中的各元素值 D该数组的大小33. 通过一个析构函数调用虚函数时,C+系统对该调用采用()。A. 动态联编 B. 静态联编 C. 不确定是哪种联编 D.函数重载34. 下面有关重载函数的说法中正确的是(C) A重载函数必须具有不同的返回值类型;B重载函数形参个数必须;C重载函数必须有不同的形参列表;D重载函数名可以不同;35. 使用string类建立对象的不正确方式是(D)。A. string str(“OK”); B. string str=”OK”; C. string s
13、tr; D. string str=OK;36. 关于C+中类的继承与派生的说法错误的是( C)A基类的protected成员在公有派生类的成员函数中可以直接使用B基类的protected成员在私有派生类的成员函数中可以直接使用C私有派生时,基类的所有成员访问权限在派生类中保持不变D继承可以分为单一继承与多重继承37. 一个类的析构函数( A )A.唯一的 B.允许重载 C.至多可有两个 D.只能是缺省的38. 下面关于静态成员描述正确的是(B)A. 静态成员是对象的数据成员B. 静态成员是对象的成员C. 静态成员是对象的成员函数D. 静态成员不是对象的成员39. 下面叙述正确的是(D)A基类
14、的保护成员在派生类中仍然是保护的 B基类的公有成员在派生类中仍然是公有的C基类的私有成员在派生类中是私有的 D从基类派生时,可以有3种派生方法40说明内联函数的关键字是( )。A. inlineB. virtualC. defineD. static41假定CAb为一个类,则执行CAb oX;语句时将自动调用该类的( ) A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 42cin是某个类的标准对象的引用,该类是( )。A. ostreamB. istreamC. stdoutD. stdin43下面的哪个保留字不能作为函数的返回类型?( )A. void B.
15、int C. new D. long44不能参与重载的运算符是( )。A. 类 B. 函数 C. 函数模板 D. 运算符45由于数据隐藏的需要,静态数据成员通常被说明为( )。A. 私有的 B. 公有的 C. 保护的 D. 不可访问的46编译时多态性使用什么获得?( )A. 重载函数 B. 继承 C. 虚函数 D. B和C 47拷贝构造函数的参数通常是( )。A. 无特殊要求B. 指向对象的指针C. 自已类对象的常引用D. 对象48C+有几种联编?( )A. 1种B. 2种C. 3种D. 4种49基类和派生类可以分别称为( )。A. “大类”和“小类”B. “父类”和“子类”C. “小类”和“
16、大类”D. “子类”和“父类”50下列对类的构造函数和析构函数描述正确的是( A )。A)构造函数可以重载,析构函数不能重载B)构造函数不能重载,析构函数可以重载C)构造函数可以重载,析构函数可以重载D)构造函数不能重载,析构函数不能重载51在函数定义前加上关键字“inline”,表示该函数被定义为( B )。A)重载函数 B)内联函数C)成员函数 D)普通函数52下面有关重载函数的说明中, ( C )是正确的。A)重载函数必须具有不同的返回值类型B) 重载函数形参个数必须不同C) 重载函数必须具有不同的形参列表D) 重载函数名可以不同53已知: print( )函数是一个类的常成员函数,它无
17、返回值,下列表示中,正确的是 ( A )。A)void print( ) const; B) const void print( ); C) void const print( ); D) void print(const)54假定Myclass为一个类,那么下列的函数说明中( D )为该类的析构函数。A) void Myclass( ); B) Myclass( int n);C) Myclass( ); D) Myclass( )55下面类的定义中有( C ) 处错误。 class myclassint i=0; public: void myclass( );myclass(value)
18、; A) 1 B)2 C)3 D)456说明虚函数的关键字是( B )。A. inlineB. virtualC. defineD. static57cout是某个类的标准对象的引用,该类是( A )。A. ostreamB. istreamC. stdoutD. stdin58、一个类的所有对象共享的是( D )。 A. 私有数据成员B. 公有数据成员C. 保护数据成员D. 静态数据成员59静态成员函数没有( B )。 A. 返回值 B. this指针 C. 指针参数 D. 返回类型60. 关于C+与C语言关系的描述中,( D)是错误的。 A.C语言是C+语言的一个子集 B.C语言与C+语言
19、是兼容的 C.C+语言对C语言进行了一些改进 D.C+语言和C语言都是面向对象的61按照标识符的要求,(A )符号不能组成标识符。 A.连接符 B.下划线 C.大小写字母 D.数字字符62. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( C)组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if63. 在"int A 3=1,3,2,4,5,6,0;"中,A22的值是( C)。 A.1 B.0 C.6 D.264. 设"Char *s;",以下正确的表达式是(B)。 A
20、.s="Computer" B.*s="Computer" C.*s="Computer" D.*s='C'65. 对于"int *pa5;"的描述中,(D )是正确的。 A.pa是一个指向数组的指针,所指向的数组是5个int型元素 B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量 C.pa 5表示某个元素的第5个元素的值 D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针66. 在下列表示引用的方法中,(A)是正确的。已知:int m=10; A.int &x
21、=m; B.int &y=10; C.int &z; D.floAt &t=&m;67. 下列for循环的次数为( B)。for(i=0, x=0; !x&&i<=5; i+) A.5 B.6 C.1 D.无限68. 对于C/C+语言的函数,下列叙述中正确的是(A)。 A.函数的定义不能嵌套,但函数调用可以嵌套 B.函数的定义可以嵌套,但函数调用不能嵌套 C.函数的定义和调用都不能嵌套 D.函数的定义和调用都可以嵌套69. 在一个被调用函数中,关于return语句使用的描述,( D)是错误的。 A.被调用函数中可以不用return语句 B.
22、被调用函数中可以使用多个return语句 C.被调用函数中,如果有返回值,就一定要有return语句 D.被调用函数中,一个return语句可以返回多个值给调用函数70. 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A )。 A.内联函数 B.重载函数 C.递归调用 D.嵌套调用71. ( D )不是构造函数的特征 A.构造函数的函数名与类名相同 B.构造函数可以重载 C.构造函数可以设置缺省参数 D.构造函数必须指定类型说明72. 已知:类A中一个成员函数说明如下:voiD Set(A&A);其中,A&的含义是( C )。 A.指向类A的
23、指针为A B.将A的地址值赋给变量Set C.A是类A对象的引用,用来作函数Set()的参数 D.变量A与A按位与作为函数Set( )的参数73. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( A )是正确的。 A.void print( ) const; B.const void print( ); C.void const print( ); D.void print(const);74. 关于虚函数的描述中,( C )是正确的。 A.虚函数是一个static类型的成员函数 B.虚函数是一个非成员函数 C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明
24、为虚函数 D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型75. 关于new运算符的下列描述中,( D)是错的。 A.它可以用来动态创建对象和对象数组 B.使用它创建的对象和对象数组可以使用运算符Delete删除 C.使用它创建对象时要调用构造函数 D.使用它创建对象数组时必须指定初始值76若有定义 int a=3, *p=&a ;则 *p的值是( B )A)常量a的地址值 B)3 C)变量p的地址值 D)无意义 77在下列关于C+与C语言关系的各描述中,( D )是错误的。A)C语言是C+的一个子集; B)C语言与C+是兼容的;C)C+对C语言进行了一些改进; D) C+和C
25、语言都是面向对象的。78在下列关于类概念的各描述中,( A )是错误的。A)类就是C语言中的结构体类型;B)类是具有共同行为的若干对象的统一描述体;C)类是创建对象的样板;D)类是抽象数据类型的实现。79采用函数重载的目的在于( D )A) 实现共享 B)减少空间 C) 提高速度 D)使用方便,提高可读性 80下列的各类函数中,( C ) 不是类的成员函数。A)构造函数 B)析构函数C)友元函数 D)拷贝初始化构造函数81下列静态数据成员特性中,( D )是错误的。A) 说明静态数据成员时前边要加修饰符static;B) 静态数据成员要在类体外进行初始化;C) 引用静态数据成员时,要在静态数据
26、成员名前加<类名>和作用域分辨符;D) 静态数据成员不是所有对象共有的。82以下各选项中,正确的函数声明是( C )A)double func( int x , int y ) B)int func( int x ; int y ) ;C)float func( int x , int y );D)char func( int x , y ) ;填空题1.定义类的动态对象数组时,系统只能够自动调用该类的(无参)构造函数对其进行初始化。2.在C+程序设计中,建立继承关系倒挂的树应使用 (单一)继承。3.表达式cout<<end1 还可表示为(cout<<n)。
27、4.基类的公有成员在派生类中的访问权限由(访问控制)决定。5.C+支持的两种多态性分别是编译时的(操作重载)(静态)多态性和运行时的(虚函数)(动态)多态性。6.C+中语句const char * const p=hello;所定义的指针p 和它所指的内容都不能被(改变(重新赋值)。7.假定AB 为一个类,则语句AB(AB&x);为该类(拷贝)构造函数的原型说明。8.将关键字const 写在成员函数的(函数头)和(函数体)之间时,所修饰的是this 指针。9.在C+中,访问一个对象的成员所用的运算符是(·),访问一个指针所指向的对象的成员所用的运算符是(->)。10.派
28、生类从一个或多个以前定义的该类的(基类)。11. 运算符重载时,其函数名由 (operator运算符) 构成。成员函数重载双目运算符时,左操作数是(当前对象),右操作数是(函数形参)。12C+支持面向对象程序设计的四个要素是:(封装性)、(继承性)、(抽象性)和(多态性)。 。13模板分为(类)模板和(函数)模板。14. 定义内联函数所用的关键字(inline),定义友元所用的关键字为(friend)。15. 当一个派生类具有多个基类时,这种继承方式称为(多重继承)。16. 通过一个构造函数调用虚函数时,C+系统对该调用采用(静态)联编。17. 任何类中允许有(private)、(public
29、)、(protected)三种访问控制类型的成员,数据成员和成员函数的默认类型为(private)。18. 只有在(公有)继承的情况下,基类和派生类之间才有赋值兼容性规则。19. 运算符重载使用的两种方式是(成员函数)和(友元函数)。20成员名限定的符号是( :),它可以在引用成员时避免(二义性)。21. 在用class定义一个类时,数据成员和成员函数的默认访问权限是(privated)。22. 已知int DBL(int n)return n+n;和long DBL(long n)return n+n;是一个函数模板的两个实例,则该函数模板的定义是(template <class T&
30、gt; T DBL(T n)return n+n;)。(要求写出函数模板的完整定义)23. 静态数据成员必须在(类外)进行初始化。24. 含有纯虚函数的类称为(抽象类)。25. 若Queue是一个类,aQueue是它的一个对象,而且该类中定义了一个静态成员函数show()则在类外对该成员的函数进行调用的方式可以为(aQueue.show()和(Queue:show()。26. 定义内联函数所用的关键字为(inline),定义友元所用的关键字为(friend)。27. 使用成员函数重载运算符时,若运算符是二元的,则参数表中有(1)个操作数,此时(当前对象)作为此运算符的左操作数。28、C+程序中
31、,对象的初始化和清理工作,分别由两个特殊的成员函数(构造函数)和(析构函数)来完成。29、在c+中,分别用(变量)与(函数)来表现某种事物的所具有的属性和行为,并且将它们封装在一起,形成一种抽象数据类型(类)。30、当用一个对象初始化另一个新的同类对象,将调用(),其特殊之处在于:形参是()。31、模板是C+支持参数化的工具,我们通常用类模板和函数模板,这些只是面向对象的()性的一个方面。32、如果在某个类定义中用关键字()声明了一个外部函数(也许是其他类的一个成员)后,这个外部函数就可以例外的访问该类的任何成员,这个外部函数称为类的()函数。33、可以将类的成员声明为static,使其成为(
32、)。这样的成员在编译时被创建,其实例只有一个,为所有该类的对象()。34、()是动态动态联编的基础。它是非静态的成员函数,经过()之后,在类族中可以实现运行过程中的多态。35、程序中有如下语句:int a=30;int b=a+;int c=+a; 则b=( ),c=()数组A2020中,第一个元素是(),最后一个元素是()36、声明一个int型指针,请为其动态分配含10个元素的地址空间:( )。37在类中必须声明成员函数的(原型),成员函数的(实现)部分可以写在类外。38如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是(引用)类型或 (指针)类型。39(抽象)类只能
33、作为基类使用,而不能声明它的对象。40进行函数重载时,被重载的同名函数如果都没有用const修饰,则它们的形参(个数)或 (类型)必须不同。41通过一个(常)对象只能调用它的常成员函数,不能调用其他成员函数。42函数的递归调用是指函数直接或间接地调用(自身)。43拷贝构造函数的形参必须是(本类对象的引用)。44设函数max是由函数模板实现的,并且max(3.5, 5)和max(3, 5)都是正确的函数调用,则此函数模板具有( 2 )个类型参数。45在C+中,函数重载与虚函数帮助实现了类的(多态)性。46由static修饰的数据成员为该类的所有对象(共享)。47重载函数在参数类型或参数个数上不同
34、,但(函数名)相同。48使用new建立的动态对象在不用时必须用( delete )释放所占用的空间。49重载运算符” 的函数名为( oprator- )。 50C+中类的用途有两种, 一种是类的实例化, 即生成类的对象, 另一种是通过( 继承 ),派生出新的类。 51编译时多态性可以用( 重载 )函数实现。52一个C+程序的执行从(main)函数开始,到 (main)函数结束 。53在C+ 中, 函数在定义时可以预先定义出默认的形参值。默认形参值必须按(从右到左) 的顺序定义。因为在调用时,实参初始化形参是按(从左到右)的顺序。54类是逻辑上相关的(函数)与(数据)的封装。特殊类的对象拥有其一
35、般类的全部属性与服务,称作特殊类对一般类的(继承)。55在C+中,函数的参数有两种传递方式,它们是值传递和(地址或指针或引用传递)。 56当一个成员函数被调用时,该成员函数的(this指针)指向调用它的对象。 57在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有(作用域分隔符限定时),对此数据成员的访问将出现歧义。58拷贝构造函数使用(引用)作为参数初始化创建中的对象。59在公有继承的情况下,基类数据成员在派生类中的访问权限(保持不变)。60 用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(没有形参的或缺省参数)构造函数,
36、否则应用程序会产生一个编译错误。 61静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共享)。 62为了避免可能出现的歧义,C+对ifelse语句配对规则规定为:else总是与(与最近的if)配对。 63 面向对象的程序设计有四大特征,它们是抽象、封装、 (继承)、 (多态)。64 在C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型(不同);在基类和派生类中,成员函数的覆盖是指(派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同)。 65 构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数
37、名是在类名前加一个、(析构函数没有参数)、(析构函数可以定义为虚函数)。 66 动态联编要满足两个条件,它们是(被调用的成员函数是虚函数)、(用指针或引用调用虚函数)。67 在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为(抽象类),定义该类至少具有一个(纯虚函数)。 68 在C+类中,const关键字可以修饰对象和成员函数,const对象不能(被修改),const成员函数不能(修改类数据成员)。 69 C+中没有字符串类型,字符串是通过(字符数组)来表示的,每一个字符串都有一个结尾字符(0)。 70 C+中没有输入输出语句,输入输出是通过(输入输出库)实现的, 写出一条打印整型
38、变量n的输出语句:(cout<<n;)。 71 举出C+中两种代码复用的方式:(继承)、 (重载)。判断正误题(判断正误,在题后的括号内,正确的划上“”错误的划上“×”。)1不可以定义抽象类的对象。( )2内联函数的定义必须出现在第一次调用内联函数之前。( )3模板函数与函数模板的意义完全相同。( × )4只有常成员函数才可以操作常对象。( )5引用可以不初始化。( × )6构造函数可以设置默认参数 ( )7类的析构函数的作用是对象的初始化 ( × )8cout的默认输出对象是键盘, cin的默认输入对象是屏幕 ( × )9抽象类可
39、以用来直接创建对象。 ( × )10常对象可以调用任意成员函数。 ( × )简答题1、 虚析构函数有什么作用?解答要点:对象销毁时,需要调用析构函数。在多态调用时,是用基类的指针访问派生类的对象。如果析构函数是非虚函数,则基类指针只能访问基类的析构函数,而不能访问派生类的析构函数,导致派生类对象销毁时,没有调用派生类的析构函数,只是调用了基类的析构函数。如果把析构函数定义成虚函数,则可克服这个问题。2、 拷贝构造函数在哪几种情况下调用?解答要点:用一个对象初始化另一个对象时当用对象作为函数参数传递时当函数返回对象时3、 函数重载与函数覆盖有什么不同,它们与多态有什么关系?
40、解答要点:函数重载是指函数名相同,而函数的参数个数或类型不同;覆盖是指在派生类中成员函数与基类成员函数的函数名、参数个数、类型与返回值均相同;C+中正是通过虚函数的覆盖,实现多态的功能。4、 C+继承是如何工作的?答:继承使得派生类能够使用基类的公有和保护成员,从而实现代码的复用,派生类可以增加成员,也可以隐藏和覆盖基类的成员。对于公有继承,基类成员的访问权限在派生类保持不变。5、 类与对象有什么区别?答:类是类型,是对象的抽象,对象是类的具体实例。一个类可以有多个对象,每个对象都有自己的存储单元,而类不占存储单元。6 若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可
41、能会产生什么问题?解答要点:当对象含有指针数据成员,并用它初始化同类型的另一个对象时,缺省的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出现同一内存单元释放两次,导致程序运行出错。7 简述成员函数、全局函数和友元函数的差别。解答要点:以下几点必须说清楚:成员函数是在类内部定义的,作用域在类的内部,成员函数可以访问类的数据成员(公有、保护和私有数据成员),可以调用该类的其它成员函数(公有、保护和私有成员函数),可以调用全局函数。如果友元函数是另一个类的公有成员函数,则该类的成员函数也只能通过那个类的对象调用,不能调用那个类的保护
42、和私有成员函数。非本类成员函数(其它类成员函数或全局函数)可以通过该类的对象访问该类的公有数据成员和调用该类的的公有成员函数。不是在类中定义的成员函数都是全局函数。如果某一个函数(全局函数或类的成员函数)定义为另一个类的友元函数,需要在那个类中用friend关键字声明,友元函数并不是类的成员,它的定义自然是在那个类的外面。8 简述结构化的程序设计、面向对象的程序设计的基本思想。解答要点:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。9 结构str
43、uct和类class有什么异同?解答要点:struct和class都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。在C+中,struct可被class代替。程序阅读分析题1、分析程序,写出程序的输出结果(7分)。#include<iostream>using namespace std;class Clockprivate:int Hour,Minute,Second;public:void SetTime(int NewH=24,int NewM=24,int NewS=24)Hour=NewH;Minute=NewM;Second=
44、NewS;void ShowTime()cout<<Hour<<":"<<Minute<<":"<<Second<<endl;void main()cout<<"time set and output: "<<endl;Clock MyClock;MyClock.SetTime();MyClock.ShowTime();MyClock.SetTime(8,30,30);MyClock.ShowTime();输出结果: time set an
45、d output:24:24:248:30:302、分析程序,写出程序的输出结果(7分)。#include<iostream>using namespace std;class pointprivate:int x,y;public:point(int xx=0,int yy=0)x=xx;y=yy;cout<<"构造函数被调用"<<endl;point(point &p);int GetX()return x;int GetY()return y;point:point(point &p)x=p.x;y=p.y;cout
46、<<"拷贝构造函数被调用"<<endl;void main()point A(4,5);point B(A);cout<<B.GetX()<<endl;输出结果:构造函数被调用拷贝构造函数被调用43.在括号中注释相应的语句(8分)#include <iostream>using namespace std;/有动态栈区的stack类class stackint stacksize;long *buffer;long *sp;public:stack(int size)/( 1 )stacksize=size;sp=
47、buffer=new longsize;stack()/( 2 )delete buffer;/( 3 )void push(long );long pop();void stack:push(long data)if(sp>=buffer+stacksize)cout<<"overflow!n"else*sp=data;sp+;long stack:pop()if(sp<=buffer)cout<<"stack is empty!n"return 0;else return(*-sp);void main()stac
48、k *pa=new stack(10);/( 4 )pa->push(351);/ ( 5 )pa->push(7075461);cout<<endl;cout<<pa->pop()<<"is popped.n"delete pa;(1)(2)(3)(4)(5)4请在以下两题中任选一题,该题得分即为本小题得分。如两题都答,则取两题得分之平均值为本小题得分。(1)程序:#include <iostream>#include <string>using namespace std;class Base
49、 private:char msg30;protected:int n;public:Base(char s,int m=0):n(m) strcpy(msg,s);void output(void) cout<<n<<endl<<msg<<endl;class Derived1:public Baseprivate:int n;public:Derived1(int m=1): Base("Base",m-1) n=m; void output(void) cout<<n<<endl; Base:ou
50、tput(); ;class Derived2:public Derived1private:int n;public:Derived2(int m=2): Derived1(m-1) n=m; void output(void) cout<<n<<endl; Derived1:output(); ;int main()Base B("Base Class",1);Derived2 D;B.output();D.output();40运行结果:1Base Class210Base(2)程序:#include <iostream>using
51、 namespace std;class Samppublic:void Setij(int a,int b)i=a,j=b;Samp()cout<<"Destroying."<<i<<endl;int GetMuti()return i*j;protected:int i;int j;int main()Samp *p;p=new Samp5;if(!p)cout<<"Allocation errorn"return 1;for(int j=0;j<5;j+)pj.Setij(j,j);for(in
52、t k=0;k<5;k+)cout<<"Muti"<<k<<" is:" <<pk.GetMuti()<<endl;deletep;return 0;运行结果:Muti0 is:0Muti1 is:1Muti2 is:4Muti3 is:9Muti4 is:16Destroying.4Destroying.3Destroying.2Destroying.1Destroying.05请在以下两题中任选一题,该题得分即为本小题得分。如两题都答,则取两题得分之平均值为本小题得分。(1)程序:#i
53、nclude <iostream>using namespace std;class Vectorpublic:Vector(int s=100);int& Elem(int ndx);void Display(void);void Set(void);Vector(void);protected:int size;int *buffer;Vector:Vector(int s)buffer=new intsize=s;int& Vector:Elem(int ndx)if(ndx<0|ndx>=size)cout<<"error in index"<<endl;exit(1);return bufferndx;void Vector:Display(void)for(int j=0; j<size; j+)cout<&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年白酒送礼采购合同范本
- 银行卡解约协议书范本范本
- 大学实验安全
- 离家出走离婚协议书范文派出所
- 人教版英语八年级下册 Unit 5 词汇运用册
- 学校搬迁后的教学计划调整方案
- 水利工程汽车吊吊装方案设计
- 测量仪器销售代理合同
- 工厂车间安全培训试题附参考答案(综合卷)
- 建筑工地钢梁吊装安全方案
- 主要建筑材料构配件及设备试验检验和功能性检测计划
- 2023年云南黄金矿业集团股份有限公司招聘笔试题库及答案解析
- 原发免疫性血小板减少症课件
- 经销商文件-phadia250项目建议书-ver
- 2022版义务教育(劳动)课程标准(含2022年修订部分)
- 电动葫芦出厂检验报告
- 找次品-华应龙老师课件
- 风电工程项目质量控制管理
- 中小学德育工作评价细则
- 下穿式隧道建设工程监理实施细则
- DB1506T 13-2020 热力站建设技术标准
评论
0/150
提交评论