A、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;
B、在公有继承中,基类中只有公有成员对派生类的对象是可见的;
C、在私有继承中,基类中只有公有成员对派生类是可见的;
D、在私有继承中,基类中的保护成员对派生类的对象是可见的;
A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;
B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;
C.在私有继承中,基类中只有公有成员对派生类是可见的;
D.在私有继承中,基类中的保护成员对派生类的对象是可见的;
以下关于派生机制的描述中,不正确的是
A.派生类不仅可以继承基类的成员,也可以添加自己的成员
B.设置protected成员是为派生类访问基类成员之用
C.采用不同的继承方式,将限制派生类对基类成员的访问
D.采用私有继承,派生类只能得到基类的公有成员
以下有关继承的叙述正确的是()。
A、构造函数和析构函数都能被继承
B、派生类是基类的组合
C、派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员
D、基类的公有成员一定能被派生类的对象访问
以下有关继承正确的是
A: 构造函数和析构函数都能被继承
B: 派生类是基类的组合
C: 派生类对象除了能访问自己的成员外,不能访问基类中的所有成员
D: 基类的公有成员一定能被派生类对象访问
一.单选题(共13题,35.1分)1编写C+程序一般需经过的几个步骤依次是 。 A编辑、调试、编译、连接 B编辑、编译、连接、运行 C编译、调试、编辑、连接 D编译、编辑、连接、运行正确答案: B2决定C+语言中函数的返回值类型的是 。 Areturn语句中的表达式类型 B调用该函数时系统随机产生的类型 C调用该函数时的主调用函数类型 D在定义该函数时所指定的数据类型正确答案: D3下面叙述不正确的是 。 A派生类一般都用公有派生 B对基类成员的访问必须是无二义性的 C赋值兼容规则也适用于多重继承的组合 D基类的公有成员在派生类中仍然是公有的正确答案: D4所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是 。 A类 B对象 C函数体 D数据块正确答案: A5对基类和派生类的关系描述中,错误的是 。 A派生类是基类的具体化 B基类继承了派生类的属性 C派生类是基类定义的延续 D派生类是基类的特殊化正确答案: B6假定一个类的构造函数为A(int aa,int bb) a=aa-;b=a*bb;,则执行A x(4,5);语句后 ,x.a和x.b的值分别为 。 A3和15 B5和4 C4和20 D20和5正确答案: C7在类中说明的成员可以使用关键字的是 。 Apublic Bextern Ccpu DRegister正确答案: A8下列字符串中可以用作C+标识符的是 。 A_123 Bfoobar Ccase D3var正确答案: A9字符串”student”占用 个字节的空间。 A7 B6 C5 D8正确答案: D10在类中说明的成员可以使用关键字 进行修饰。 Aprivate Bextern Cauto Dregister正确答案: A11在C+语言中,对函数参数默认值描述正确的是: A函数参数的默认值只能设定一个 B一个函数的参数若有多个,则参数默认值的设定可以不连续 C函数参数必须设定默认值 D在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值正确答案: D12假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的 。 A有参构造函数 B无参构造函数 C拷贝构造函数 D赋值构造函数正确答案: B13下列给字符数组进行初始化中, 是正确的。 Achar s1 ="12345abcd" Bchar s23="xyz" Cchar s33= a, x, y; Dchar s423="xyz","mnp"正确答案: A二.填空题(共7题,18.9分)1C+语言中如果调用函数时,需要改变实参或者返回多个值,应该采取_或者_方式。切换到文本模式切换到文本模式正确答案:第一空: 传地址第二空: 引用2若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_语句。切换到文本模式正确答案:第一空: 声明3若要使用string类,需要引入的头文件是_。在函数前面用_保留字修饰时,则表示该函数表为内联函数。切换到文本模式切换到文本模式正确答案:第一空: string.h第二空: inline4编译时的多态性通过_函数实现。切换到文本模式正确答案:第一空: 重载5C+程序中,一个基本语句的最后一个字符是_ 。切换到文本模式正确答案:第一空: 分号(; )6假定用户没有给一个名为MyClass的类定义构造函数和析构函数,则系统为其定义的默认构造函数形式为_,默认析构函数形式为_。切换到文本模式切换到文本模式正确答案:第一空: MyClass()第二空: MyClass() 7在类中定义和实现的函数称为_。切换到文本模式正确答案:第一空: 内联函数三.判断题(共11题,29.7分)1函数体内声明的静态变量,至多只会被初始化一次。正确答案:2对于同一个类中的两个非静态成员函数,它们的函数的名称、参数类型、参数个数、参数顺序以及返回值的类型不能完全相同。正确答案:3将类A所有构造函数的可访问性都限制为私有的,那么在main函数中不可能得到类A的实例对象。正确答案:4虽然抽象类的析构函数可以是纯虚函数,但要实例化其派生类对象,仍必须提供抽象基类中析构函数的函数体。正确答案:5构造函数的初始化列表中的内容,不会影响构造对象中成员数据的初始化顺序。正确答案:6C+的继承性允许派生类继承基类的部分特性,并允许增加新的特性或重定义基类的特性。正确答案:7C+中允许对数组进行动态定义。正确答案:8返回值类型、参数个数和参数类型都相同的函数也可以重载。正确答案:9友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。正确答案:10析构函数是函数体为空的函数。正确答案:11就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。正确答案:四.程序阅读题(共2题,5.4分)1【程序阅读题】写出下列程序的运行结果。#include#include#includebool fun(long n);void main()long a=10,b=30,l=0;if(a%2=0) a+;for(long m=a;m<=b;m+=2) if(fun(m)if(l+%10=0)cout <<endl;cout <<setw(5) <<m;bool fun(long n)int sqrtm=(int)sqrt(n); for(int i=2;i<=sqrtm;i+)if(n%i=0)return false;return true; 填写答案正确答案:11 13 17 19 23 292【程序阅读题】写出下列程序的运行结果。#includevoid main() int x=3,y=3;switch(x%2)case 1: switch (y) case 0:cout<<"Firstt" case 1:cout<<"Secondt"break; default: cout<<"Hellowt" case 2:cout<<"Thirdn" 填写答案正确答案:Hellow Third五.程序设计题(共4题,10.9分)1程序设计题 : 已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有 GetPerim()函数计算对象的周长,并编写测试main()函数。 class Shapepublic:Shape()Shape()virtual float GetPerim()=0; 填写答案正确答案:class Rectangle:public Shapepublic:Rectangle(float i,float j):L(i),W(j) Rectangle()float GetPerim()return 2*(L+W);private:float L,W;class Circle:public Shapepublic:Circle(float r):R(r)float GetPerim()return 3.14*2*R; private:float R;void main()Shape * sp;sp=new Circle(10);cout<GetPerim ()<<endl;sp=new Rectangle(6,4);cout<GetPerim()<<endl;2程序设计题 : 求n(n=3)个学生的最高分和最低分及姓名,下面已经给出student类声明和main函数,请写出下面的student类的实现部分的三个函数: student(char na,int d),* getname(),compare(student &s1,student &s2)。#include#includeclass studentchar name,10,;int deg;public:student(char na,="",int d=0);char * getname();friend int compare(student &s1,student &s2);int getdeg();void main()student st,=student("王强",74),student("李刚",68),student("张雪",84);int i=0,min=0,max=0;for(i=1;i<3;i+)if(compare(st,max,st,i,)=-1)max=i;if(compare(st,min,st,i,)=1)min=i;cout<<"最高分:"<<st,max,.getdeg()<<"姓名:"<<st,max,.getname()<<endl;cout<<"最低分:"<<(*(st+min).getdeg()<<"姓名:"<st,max,.getname()s2.deg)return 1;else!-最低分:(*(st+min).getdeg()姓名:st,max,.getname()/st,max,.getname()!-!-
下列关于派生类和基类的描述中,正确的是( )。
A.派生类成员函数只能访问基类的公有成员
B.派生类成员函数只能访问基类的公有和保护成员
C.派生类成员函数可以访问基类的所有成员
D.派生类对基类的默认继承方式是公有继承
下列有关继承和派生的叙述中,正确的是( )。
A.如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员
B.派生类的成员函数可以访问基类的所有成员
C.基类对象可以赋值给派生类对象
D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
下列描述中,错误的是( )。
A) 公有继承时基类中的公有成员在派生类中仍是公有成员
B) 公有继承时基类中的保护成员在派生类中仍是保护成员
C) 保护继承时基类中的公有成员在派生类中仍是公有成员
D) 保护继承时基类中的保护成员在派生类中仍是保护成员
A.
B.
C.
D.
下列关于派生类和基类的描述中,正确的是( )。
A) 派生类成员函数只能访问基类的公有成员
B) 派生类成员函数只能访问基类的公有和保护成员
C) 派生类成员函数可以访问基类的所有成员
D) 派生类对基类的默认继承方式是公有继承
A.
B.
C.
D.
下面关于继承机制的描述中,不正确的是( )。
A.派生类不仅可以继承基类的成员,也可以添加自己的成员
B.设置protected成员是为派生类访问基类成员之用
C.采用不同的继承方式,将限制派生类对基类成员的访问
D.采用私有继承,派生类只能得到基类的公有成员