C++考前必背的名词解释和简答题_第1页
C++考前必背的名词解释和简答题_第2页
C++考前必背的名词解释和简答题_第3页
C++考前必背的名词解释和简答题_第4页
C++考前必背的名词解释和简答题_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、C+ (面向对象的程序设计)考前必背的名词解释和简答题1. 封装封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。例如C+中的类,它定义了该集合中每个对象所共有的属性和方法。2. 继承继承是让某个类型的对象获得另一个类型的对象的特征。例如:C+中子类对父 类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。3. 多态多态是指不同类型的对象接收相同的消息时产生不同的行为。多态机制使具有不 同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。 例如函数的重载。4. 什么是 this 指针?为什么要用 this 指针?this 指针是类中的一个特殊指针,当类实例化时,

2、 this 指针指向对象自己;而 在类的声明时,指向类本身。通过它不仅可以提升成员 函数操作的效率,而且能 简化运算符重载代码。5. 叙述公有、私有、保护成员在类中、类外和对象中的访问权限。类中的关键字 public, private, protected 声明了类中的成员与类外之间的关 系,称为访问权限 。对于 public 成员来说,他们是公有的,可以在类外和对象中访问。对于 private 成员来说,他们是私有的,不能在类外和对象中访问,数据成员只 能由类中的函数使用,成员函数只允许在类中调用。对于 protected 成员来说,他们是受保护的,具有半公开性质,可以在类中与子 类中访问。

3、6. 构造函数和析构函数的作用是什么?构造函数的功能是在创建对象时,给数据成员赋初值,即给对象初始化。析构函数的功能是释放一个对象,在对象删除前,用来做一些内存释放等清理工 作。7. 什么是类的继承和派生?继承是指一个事物可以继承其父辈全部或部分的特性,同时本身还有自己的特性。 当一个新类从一个已定义的类中派生后,新类不仅继承了原有类的属性和方法, 并且还拥有自己新的属性和方法,称为类的继承和派生。8. 派生类 public 继承方式有那些特点?(1) 在派生类中, 基类的公有成员、 保护成员和私有成员的访问属性保持不变。 在派生类中,基类的私有成员是无法访问的, 虽然基类的私有成员被派生类继

4、承了。(2) 派生类对象只能访问派生类和基类的公有成员。9. 派生类 protected 继承方式有那些特点?1) 在派生类中,基类的公有成员、保护成员的访问属性都变成了保护的基类的私有成员是无法访问的私有的。类的私有成员是无法访问的(2) 在保护继承方式下,派生类中仍可以访问基类的公有成员和保护成员,但(3) 派生类对象只能访问派生类的公有成员,不能访问基类的任何成员。10. 派生类 private 继承方式有那些特点?(1) 在派生类中,基类的公有成员、保护成员和私有成员的访问属性都将变成(2) 私有继承方式下,派生类中仍可以访问基类的公有成员和保护成员,但基(3) 派生类对象只能访问派生

5、类的公有成员,不能访问基类的任何成员。11. 在定义派生类的过程中,如何对基类的数据成员进行初始化?通过调用基类的构造函数来设定基类的数据成员的初值。格式为 (形参表) :基类 1(参数表) ,基类 2(参数表)对象成员1 (参数表),对象成员2 (参数表)12. 什么是虚基类?它的作用是什么?使用虚基类的目的是在多重派生中使用共有基类时,在派生类中只有一个拷贝虚基类是指在派生类中指定的基类是虚继承的方式。从而解决有多个基类拷贝所产生的二义性问题。13. 在函数调用过程中,什么是赋值传递,什么是引用传递?赋值传递是将实参赋值给形参变量, 然后执行被调函数体。 赋值传递有两种形式, 一是直接传常

6、量或变量值,二是传变量的地址。 引用传递是将形参引用给形参,需要形参与实参指的是同一变量。14. #include 和 #include “filename.h 有”什么区别? 对于 #include ,编译器从标准库路径开始搜索filename。 对于#include“ filename.!;)编译器从用户的工作路径开始搜索filename。15. const 有什么用途?(请至少说明两种)(1) 可以定义 const 常量(2) const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提 高程序的健壮性。16. 类的指针成员为

7、什么要用 new 另辟内存空间?为了保证类的封装性, 类中的指针成员所指向的内存空间必须在类的定义中自行独立开辟和释放。语法扩充1.1 选择题在C+中用(D )能够实现将参数值带回。a)数组 b)指针c)引用d)上述ABC都可考虑函数原型 void test(int a,int b=7,char *ch=*), 下面的函数调用中,属于不合法调用的是: ( C ) A)test(5) B)test(5,8)C)test(6,#)D)test(0,0,*) ;已知:int m=10 ;下列表示引用的方法中,正确的是: (C )A)int &Z; B)int &t=10; C)int &X=m; D

8、)float &f=&m ; 下列不是函数重载所要求的条件是 :( D )A)函数名相同B)参数个数不同C参数类型不同D)函数返回值类型不同在C+冲执行以下4条语句后输出rad值为:(C )static int hot=200 ;int &rad=hot ;hot=hot+100 ;coutradendl ;A) 0B) 100C) 300D) 200系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:( D )A)参数个数B)参数类型C)函数名称D)函数的返回值类型对C+语言和C语言的兼容性,描述正确的是:(A )A)C+t容CB)C+部分兼容CC)C+不兼容C D)C兼容C+在C

9、+中使用流进行输入输出,其中用于屏幕输出的对象是:(C )A)cerr B)cin C)cout D)cfile对使用关键字 new 所开辟的动态存储空间,释放时必须使用( C )A)free B)create C)delete D)realse 在函数调用时,如某一默认参数要指明一个特定值,则有(A )A)其之前所有参数都必须赋值B)其之后所有参数都必须赋值C其前、后所有参数都必须赋值D)其前、后所有参数都不必赋值下列哪个类型函数不适合声明为内联函数( A )A)函数体语句较多B)函数体语句较少C函数执行时间较短D)函数执行时间过长int Func(int, int) ;不可与下列哪个函数构

10、成重载( B )A)int Func(int, int, int);B)double Func(int, int);C)double Func(double, double) ; D)double Func(int, double) ; 下面的哪个保留字不能作为函数的返回类型(C )A)void B)int C)new D)long 一个函数功能不太复杂,但要求被频繁调用,选用( A )。A. 内联函数 B. 重载函数C. 递归函数D. 嵌套函数已知函数 f 的原型为: void f (int&a,char*b) ;变量 s,t 的定义是: int s; char t =ABCD;把s和t分别

11、作为第一参数和第二参数来调用函数f,正确的调用语句是( C )A f(&s,&t) ; B f(&s,t) ; C f(s,t) ; D f(s,&t);若定义cinstr;当输入Microsoft Visual Studio 6.0 !所得结果是str= ( B)。A、Microsoft Visual Studio 6.0 !B、MicrosoftCMicrosoft VisualD、Microsoft Visual Studio 6.0.函数模板(C)。A、代表某一具体函数B、与模板函数是同一个函数C与某一个具体的数据类型连用D、是模板函数实例化的结果在C+中,关于下列设置参数默认值的描述

12、中,正确的是(C)A、不允许设置参数的默认值B、设置参数默认值只能在定义函数时设置C设置参数默认值时,应该是先设置右边的再设置左边的D、设置参数默认值时,应该全部参数都设置下列表示引用的方法中,(A)是正确的。已知:k=1000;A、int &x=k;B、char &y;C int &z=1000;D、float &t=&k;有如下模板定义:template T fun(T x,T y)return x*x+y*y ; 在下列对fun的调用中,错误的是:(C )A) fun(2,8)B)fun(2.0,8.2)C)fun(2.3,8) D)fun ( 2 , 8)通常情况下,函数模板中的类型参

13、数个数不能是(A )A)0个B)1个C)2个D)3个1.2填空题1、 假定有如下定义:int x;,若要将整型变量y定义为变量x的引用,则应使用的定义语句是int &y=x;具有相同函数名但具有不同参数表的函数称为重载函数。2、在进行函数调用时,将把参数的值传递给值参数,把参数的.地址一传递给引用参数。3、执行完下列三条语句后,指针变量c指向_b_。Int a,b,*c=&a;int *&p=c;p=&b;4、 假设有如下函数定义:void Fun(int x,int y=100);则语旬Fun(5)语句Fun(5,100)等价。5、 在一个C+程序中,每个变量都必须遵循先定义后使用的原则。,

14、并输岀结果。6、下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和 函数TotalSum计算数组元素之和。请完成下列程序。#include int Totalsum(int array,int len)_ ;void main()int a5=2,3,6,8,10; _int Total _ ;Total =Totalsum(a,5);coutSum of array:vTotalvendl;int Totalsum(int array,int len),_int sum =0_;for(i nt I=0; Ilen;l+)sum += arrayl;re

15、turn sum;7、 下面的函数Fun未使用中间变量实现了对两个数的交换,请完成下列函数的定义。Void Fun (int &x,int &y)x+ = y;y = x-y ;x = x - y;8、 定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为_常量即在该形参声明的前面加上_const_关键字进行修饰。9、 在一个函数的定义或声明前加上关键字inline 时,该函数就声明为内联函数。1.3简答题A、.内联函数的含义在函数前加上关键字 inline说明了一个内联函数,这使一个函数在程序行里进行代码扩展而不被调用。这样的好处是减少了函数 调用的开销,产生较快

16、的执行速度。但是由于重复编码会产生较长代码,所以内联函数通常都非常小。如果一个函数在类说明中定义, 则将自动转换成内联函数而无需用inline说明。B、.函数重载的含义在同一作用域范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函数,编译时编译器能够识别实参的个数和类 型来决定该调用哪个具体函数。需要注意的是,如果两个函数仅仅返回类型不同,则编译时将会岀错,因为返回类型不足以提供足够 的信息以使编译程序判断该使用哪个函数。所以函数重载时必须是参数类型或者数量不同。C、引用与指针的区别D、内联函数使用上的限制E、定义带默认参数值函数的规则F、指针与常量的关系1.4程序阅读题1)写岀下

17、列程序的运行结果。#include void main()int x;int &p=x; x=10;p=x+10; coutx,pendl; 结果: 20,202) 写出下列程序的运行结果。#include int f(int a)return +a;int g(int &a)return +a;void main()int m=0,n=0; m+=f(g(m); n+=f(f(n);coutm=mendl; coutn=nendl; 结果: m=3 n=23) 写出下列程序的运行结果。 #include void Fun()int num=20; coutThe Funs num isnum

18、endl;void main()int num=10;coutThe mains num is numendl; Fun();int num=30;coutThe Fields num is numendl;coutThe mains num is numendl;结果:The mains num is 10The Funs num is20The Fields num is 30The mains num is 10类和对象2.1选择题下列的各类函数中,不是类的成员函数。 (C )A胸造函数B)析构函数C)友元函数D)拷贝初始化构造函数作用域运算符“:”的功能是:(B )A)标识作用域的级别

19、的B)指岀作用域的范围的C给定作用域的大小的D)标识成员是属于哪个类的已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的A) void print()const ;B)const void print();C)void const print():D)void print(const);在类定义的外部,可以被访问的成员有(C )A)所有类成员B)private的类成员C)public的类成员D)public或 private 的类成员关于类和对象不正确的说法是:(C )A)类是一种类型,它封装了数据和操作B)对象是类的实例C一个类的对象只有一个 在C+中实现封装是借

20、助于(B )D)个对象必属于某个类A)枚举B)类 C)数组 D)函数定义析构函数时,应该注意:(C )A)其名与类名完全相同B)返回类型是void类型C无形参,也不可重载D)函数体中必须有delete语句类clase CC1的说明如下,错误的语句是:(A )clase CC1int a=2;/(Apublic:;类的指针成员的初始化是通过函数完成的,这个函数通常是:(B )A)析构函数B)构造函数C)其它成员函数D)友元函数关于构造函数的说法,不正确的是:(A )A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同C)它在对象被创建时由系统自动调用D)没有返回值通常拷贝构造函数的参数

21、是: ( C )A)对象名B)对象的成员名C)对象的引用名D对象的指针名关于成员函数特征的描述中,错误的是: ( A )A)成员函数一定是内联函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的下列关于构造函数的描述中,错误的是: ( D )A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C胸造函数可以是内联函数;D)构造函数不可以重载有如下类声明“ class Aint x;,;”,则 A 类的成员 x 是:( B )A)公有数据成员B)私有数据成员C)公有成员函数D)私有成员函数类TM和类TN是两个独立的类,那么类 TM中哪种形式的数据成员一定是

22、不允许的:(C )A)TM * a B)TN & a C)TM aD)TN a;以下关于 this 指针的叙述中正确的是: ( D )A)任何与类相关的函数都有this指针;B)类的成员函数都有this指针;C)类的友员函数都有this指针;D)类的非静态成员函数才有this指针;.关于类模板的说法正确的是:( B )A)类模板的主要作用是生成抽象类B)类模板实例化时,编译器将根据给出的模板实参生成一个类C)在类模板中的数据成员具有同样类型D)类模板中的成员函数没有返回值.以下关键字不能用来声明类的访问权限的是: ( C )A)public B)private C)static D)prote

23、cted 类的私有成员可在何处访问( D )A)通过子类的对象访问B)本类及子类的成员函数中C)通过该类对象访问D) 本类的成员函数中如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:(A )A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数该类不能通过编译C)这个类不需要构造函数D)一个类可包含析构函数的个数是:( B)A)0 个 B)1 个 C)0 个或 1 个 D)0 个或多个 一个类可包含构造函数的个数是:( D )A)0 个 B)0 个或 1 个 C)0 个或多个 D)1 个或多个this 指针存在的目的是:( B )A)保证基类公有成员在子类中可以被访问B

24、)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C)保证基类保护成员在子类中可以被访问D)保证基类私有成员在子类中可以被访问下列关于类的权限的描述错误的是:( A )A)类本身的成员函数只能访问自身的私有成员B)类的对象只能访问该类的公有成员C)普通函数不能直接访问类的公有成员,必须通过对象访问D)一个类可以将另一个类的对象作为成员设类A将其它类对象作为成员,则建立 A类对象时,下列描述正确的是:(B )A)A 类构造函数先执行 B) 成员构造函数先执行C)两者并行执行D)不能确定假定有类AB,有相应的构造函数定义,能正确执行“ AB a(4),b(5), c3 , *p2=&a

25、,&b语句,请问执行完此语句后共调用该类构造函数的次数为( CA)3B)4C)5D)6)拷贝构造函数的作用是(C )。A. 进行数据类型的转换B.用对象调用成员函数C. 用对象初始化对象D.用一般类型的数据初始化对象下列静态数据成员的特性中,错误的是(D )。A. 静态数据成员的声明以关键字static开头B. 静态数据成员必须在文件作用域内初始化C. 引导数据成员时,要在静态数据成员前加(类名)和作用域运算符D. 静态数据成员不是类所有对象共享的 通过指针访问类对象成员的方法是( D )。A. :B. ; C. . D. -静态成员函数没有( B )。A 返回值B. this指针 C.指针参

26、数D.返回类型在下列关键字中,用于说明类中公有成员的是( A )。A. public; B. private ;C. protected ;D. friend不是构造函数的特征( D )。A 构造函数的函数名与类名相同;B.构造函数可以重载;C. 构造函数可以设置缺省参数;D. 构造函数必须指定类型说明。是析构函数的特征( A )。A 一个类中只能定义一个析构函数;B.析构函数名与类名不同;C. 析构函数的定义只能在类体内;D. 析构函数可以有一个或多个参数。关于成员函数特征的下述描述中,( A )是错误的。A 成员函数一定是内联函数;B.成员函数可以重载;C. 成员函数可以设置参数的缺省值;

27、D. 成员函数可以是静态的。下述静态数据成员的特性中,( D )是错误的。A 说明静态数据成员时前边要加修饰符static;B 静态数据成员要在类体外进行初始化;C引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符;D静态数据成员不是所有对象所共用的。2.2填空题1、在撤销类的对象时,C+程序将自动调用该对象的 析构_函数。2、类中的构造函数是一个特殊的成员函数,它由类的对象_自动调用,它的作用是一为对象分配内存,数据成员初始化_。3、 对类中的成员函数和属性的访问是通过public 、_protected和 private 这3个关键字来控制的。4、_delete运算符删除new运

28、算符所动态分配的内存空间。5、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为_MyClass()_。6、类中构造函数有一个或多_个,析构函数有_一_个o7、 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员_,共同行为被描述为类中的成员 函数_ o8、若要把类 FriendClass定义为类 MyClass的友元类,则应在类 MyClass的定义中加入语句 friend class FriendClass 。9、在结构定义中,数据和成员函数默认权限是_public_。在类定义中,数据和成员函数默认权限是private_。1

29、0、在下面程序的横线处填上适当的语句,使类型该程序执行结果为10 o #include class MyClasspub1ic:MyClass ( int a ) x = a; 为 x 置值_int GetNum() return x; / 取 x 值private:int x;void main()Myclass my(10);Coutmy.GetNum()end;11、完成下面的类定义。Class MyClasspublic:MyClass()x=0;_friend _ int GetNum( _MyClass _ my);private:int x;int GetNum(MyClassm

30、y)return my.x;指针 o的友元函数,则应在类 MyClass的定 义中加 入语句_friend void函数初始化对象自身。12、_new_运算符对指定类型对象动态分配内存并返回该类型的13、若要把函数 void FriendFunction()定义为类 MyClassFriendFuncticn();_。14、类的具体表现是通过定义对象_来操作的。15、在定义类的对象时,C+程序将自动调用该对象的_构造_16、一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为private 权限,而把成员函数(方法)定义为public权限。17、在类中定义和实现的函数称为_内联函数_

31、。18、非成员函数应声明为类的_友元函数_才能访问这个类的private成员。2.4程序阅读题1)写岀下列程序的运行结果。#include class MyClasschar ch;public:MyClass();MyClass(char character);void Print();MyClass();MyClass:MyClass()coutThis is a constructor!endl; ch=a;MyClass:MyClass(char character)coutThis is a constructor!endl; ch=character;void MyClass:Pr

32、int()coutThe value of ch is chendl;MyClass:MyClass()coutThis is a destructor!endl;void main()MyClass first,second(b);first.Print();second.Print();运行结果:This is a constructor!This is a constructor!The value of ch is aThe value of ch is b This is a destructor! This is a destructor!2)写出下列程序的运行结果 #includ

33、e class MyClass public: MyClass(); void Print();MyClass(); private: int I; static int j;int MyClass:j=0; MyClass:MyClass()coutThis is constructor!endl; j+=10;void MyClass:Print()coutThe value of j is Jendl; MyClass:MyClass()coutThis is a destructor!endl; void main()MyClass first,second; first.Print(

34、);second.Print();This is constructor!This is constructor!The value of j is20The value of j is20 This is a destructor!This is a destructor!继承与派生3.1选择题.在C+中,类与类之间的继承关系具有(C )A)自反性 B)对称性 C)传递性 D)反对称性.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(B )A)受限制B)保持不变C)受保护D)不受保护.按解释中的要求在下列程序划线处填入的正确语句是:(C )#include class Ba

35、sepublic:void fun()coutvBase:funvendl; ;class Derived:public Basepublic :void fun()/在此空格处调用基类的函数fun()coutvDerived:funvfun();.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(C )A)受限制 B)保持不变C)受保护D)不受保护.下面描述中,表达错误的是:(B )A)公有继承时,基类中的public成员在派生类中仍是public的B)公有继承时,基类中的private成员在派生类中仍是private 的C)公有继承时,基类中的protected 成员在派生

36、类中仍是 protected 的D)私有继承时,基类中的public成员在派生类中是private的.下列虚基类的声明中,正确的是:(B )A) class virtual B: public A B)class B: virtual public AC)class B: public A virtualD)virtual class B: public A.C+设置虚基类的目的是(A )A)消除二义性B)简化程序 C)提高运行效率 D)减少目标代码class Xint a;public:X(int x=0)a=x; ;class Y:public Xint b;public :Y(int x

37、=0,int y=0):X(y) b=x; ;下列语句组中出现语法错误的是( D)A. X *pa=new Y(1,2);B. X a1=Y(1,3);C. Y b1(2,3); X &a3=b1;D. X a4(10);Y b2=a4;class Base public: int i;Base(int t) : i ( t );class Derived: protected Base Base b;int j;public:Derived (int t);在构造函数 Derived 的下列定义中,正确的是 (B )A.Derived : :Derived(intt) :b(t), j(t)

38、 B.Derived : :Derived(intt) :b(t), Base(t), j(t) C.Derived : :Derived(intt) :Base(t), j(t) D.Derived : Derived(intt): i(t), b(t), j(t) 在哪种派生方式中,派生类可以访问基类中的 protected 成员( B )A)public 和 private B)public、protected 和 privateC)protected 和 private D) 仅 protected在C+中,类与类之间的继承关系具有(C )A) 自反性 B) 对称性 C) 传递性 D)

39、 反对称性 下列关于类的继承描述中, (A )是错误的A) 派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B)派生类也是基类,但基类不一定具有派生类的全部属性和方法C)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D)一个基类可以有多个派生类,一个派生类可以有多个基类.当一个派生类仅有 protected 继承一个基类时,基类中的所有公有成员成为派生类的(C)A) public 成员B) private 成员C) protected 成员 D) 友元当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( B )A) public 成员B) pri

40、vate 成员C) protected 成员D) 友元不论派生类以何种方法继承基类,都不能使用基类的( B )A) public 成员 B) private 成员 C) protected 成员 D) public 成员和 protected 成员 在创建派生类对象时,构造函数的执行顺序是(D)A) 对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数 下列虚基类的声明中,正确的是( D )。A)class virtual B:

41、public AB)virtual class B:public AC)class B:public A virtualD)class B:virtual public A 下面叙述错误的是( A )。A)基类的protected成员在派生类中仍然是 protected的B)基类的protected成员在public派生类中仍然是 protected的C)基类的protected成员在private派生类中是 private的D)基类的protected成员不能被派生类的对象访问 下列说法中错误的是( A )。A)保护继承时基类中的 public 成员在派生类中仍是 public 的B)公有继

42、承时基类中的private成员在派生类中仍是 private的C)私有继承时基类中的public成员在派生类中是private的D)保护继承时基类中的public成员在派生类中是protected的关于多继承二义性的描述中,错误的是( B )。A)一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B)解决二义性的最常用的方法是对成员名的限定法C)基类和派生类中同时出现的同名函数,也存在二义性问题D)一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性 下面叙述错误的是( C )。A)派生类可以使用private派

43、生B)对基类成员的访问必须是无二义性的C)基类成员的访冋能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合 派生类的构造函数的成员初始化列表中,不能包含( C )。A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化 下面(B)的叙述不符合赋值兼容规则。A)派生类的对象可以赋值给基类的对象B)基类的对象可以赋值给派生类的对象C)派生类的对象可以初始化基类的引用D)派生类的对象的地址可以赋值给指向基类的指针.下列虚基类的声明中,正确的是:(B )A)class virtual B: public A B)class B: virtual p

44、ublic AC)class B: public A virtual D)virtual class B: public A.C+设置虚基类的目的是(A )A)消除二义性B)简化程序C)提高运行效率 D)减少目标代码3.2填空题1、 垂直访问时,保护成员的访问控制权限与_公有_成员相同。2、利用继承能够实现_代码复用_。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件3、 派生类对基类的继承有三种方式:_public、 protected 和 private 。4、 多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。5、 C+提供的 多继

45、承机制允许一个派生类继承多个基类,即使这些基类是相互无关的。6、 派生类可以调用其定义中不具备的数据和操作。7、 对基类数据成员的初始化必须在派生类构造函数中的初始化列表处执行。8、 如果类Alpha继承了类Beta,则类Alpha称为派生_类,类Beta称为_基_类。9、己知下面的程序框架,按注释中的提示补充细节。#include class planetprotected:double distance;/行星距太阳的距离int revolve;/行星的公转周期public:planet(double d,int r)distance=d;revolve=r;class earth:pub

46、lic planetdouble circumference; /地球绕太阳公转的轨道周长public:/定义构造函数earth(double d,int r),并计算地球绕太阳公转的轨道周长。/ 假定:circumnference=2*d*3.1416 earth(double r): planet (d, r) circumnference=2*d*3.1416:/定义show()函数显示所有信息void show() coutvvdistance is ” distancevvmiles, revolve is#include vmath.hvoid main()Rectan

47、gle rect(1,2,3,4);rect.Move(5,6);coutvv “ The data of rect(XW,H):( “vvrect.GetX()vv“, ” vvrect.GetY()vv“, ”vvrect.GetW()vv“, ” vvrect.GetH()vv:) ” vvendl13、多继承可以视为是 亠单继承一的扩展。14、在划线处填上适当的语句,完成下列程序。#include vmath.hclass Point public:point(double a,double b,double c) X =a; Y=b; Z =c;double Getx()return

48、 X;double Gety()return Y;double Getz()return Z;private:double X, Y;protected:double Z;class Line : Pointpublic:Line(double a ,double b,double c,double d) :Point(a,b,c) K = d; void show()coutGetx()endl;coutGety()“ .endl;coutGetz()“ vvZvvendl;coutvvKvvendl;private:double k;void main()Line obj(1.2,3.4,

49、5.6,7.8);obj.show();15、类继承中,缺省的继承方式是private 。16、当用protected继承从基类派生宀个类时,基类的public成员成为派生类的protected 成员,protected成员成为派生类的protected= 成员。18、公有派生 类的对象可作为 基类的对象处理。19、指向基类的对象的指针变量也可以指向.公有派生类_的对象。20、类之间的”有”关系代表组合 ,”是”关系代表 继承 。3.3简答题A、派生类的定义及其特点B、单继承和多继承的概念及其关系C、继承方式的种类及其各自的特点D、在继承中构造函数和析构函数的调用规则F、赋值兼容原则G、类模板和模板类的含义及其关系 3.4 读程序题1、 写出下列程序的运行结果。 #include class Base public:void W

温馨提示

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

评论

0/150

提交评论