



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 概述1、简述 C+的发展简况。答:C+语言是从 C 语言发展而来的 ,C 语言是一种编译型的面向过程的程序设计语言,它最早是从英国剑桥大学一个名叫Martin Richards 的学者在60年代开发的BCPL( 即 BasicCombind Programming Language)语言的基础之上发展而来的。BCPL语言是 MartinRichards在开发系统软件时,作为描述性语言而使用的一种程序设计语言。1970 年,美国 Bell 实验室的 KenThompson 在软件开发工作中,继承和发展了BCPL 语言的许多特点,进一步提出了一种叫 “B 语言”的语言。随后,在美国 Bel
2、l 实验室实现的更新型的小型机PDP-11的 UNIX操作系统的研发工作中,于 1972 年推出了一种新型的程序语言 C 语言,该语言一经推出就在国际上广泛流行。20 世纪 80 年代,由于软件工程的需要,面向对象程序设计方法在软件设计领域引起了普遍的重视,AT&T Bell 实验室的计算机科学家Bjarne Stroustrup 结合流行的 C 语言的所有成分,开发出了面向对象的程序设计语言C+。2、C+语言有那些主要特点答:C + 语言具有以下主要特点:( 1) C+语言是一个中级的程序设计语言。( 2) C+是一个结构化的程序设计语言。( 3) C+是一种面向对象的程序设计语言。
3、( 4) C+语言是一个功能齐全的编程语言。( 5) C+语言是一种移植性很好的编程语言。3、 编写的 C+语言的程序主要由那些基本组成部分构成答: C+语言的程序主要由以下几个基本组成部分构成:( 1)预处理命令:C+语言提供了三类预处理命令:宏定义命令(define) 、文件包含命令(include) 、条件编译命令(ifelseendif) ,( 2) 输入 / 输出语句( Input/Output 语句,简称 I/O 语句):C+语言的程序中总是少不了输入和输出的语句,实现与程序内部的信息交流。( 3) 函数( Function ):C+的程序是由若干个文件组成的,每个文件又是由若干个
4、函数组成,因此,可以认为 C+的程序就是函数串,即由若干个函数组成,函数与函数之间是相对的,并且是并行的,函数之间可以调用。( 4) 语句 (Statement) :语句是组成程序的基本单元。每个函数都是由若干条语句组成的。(5) 变量 (Variable):变量是通过说明语句来定义的,多数程序都需要说明变量和使用变量。(6)其他:除了以上讲述的5 个部分以外,还有其他组成部分。例如,符号常量和注释信息等也是程序的一部分。C+程序中尽量把有些常量定义为符号常量,而在C+的程序中使用符号常量,该符号常量代表着某个确定的常量值。4、 C+语言编写的程序代码有那些格式特点答: C+语言编写的源代码程
5、序的格式具有以下特点:(1) C+语言的关键字是小写字符构成的,习惯上也使用小写字母书写程序;(2) 大多数语句结尾必须用"" 作为终止符 , 否则 C+不认为该语句的结束;(3) 每个程序必须有一个且只能有一个主函数,其名称为main()的函数;(4)每个函数的函数体(包括主函数和每个子函数)必须用一对花括号 "" 和 "" 括起来;(5)一个较完整的程序文件大致含有: 包括文件程序段(一组 #include<*.h> 语句 )、函数说明部分、 全局变量说明、 主函数和若干个子函数组成。 在主函数和子函数中又包括局部变量
6、定义、库函数调用、流程控制语句、用户函数的调用语句等;(6) 注释部分包含在 "/*" 和 "*/" 之间或 "1c8765,98., , 都是一般形式的实数。(3)字符常量所谓字符常量是指一个单一字符,其表示形式是由两个单引号包括的一个字符。例如,'A','a','Q','0','9','+',':','','$' 都是字符常量。( 4)字符串常量所谓字符串常量是指用双引号括起来的一串字符来表示的数据
7、下面给出几个字符串常量的例子:"Hello!","A Graduate Student","9","Bill Gates","李四 ""北京海淀学院路29 号","姓名: " ,"",""(5)标识常量所谓标识常量是指用标识符代替常量使用的一种常量, 其名称通常是一个标识符。标识常量的一般说明形式为:#define<标识常量名称 ><常量 >例如,#defineMAX50#definePI#d
8、efineERROR-1其中, MAX、PI 以及 ERROR都是标识常量,它们代替的常量分别是50、和 -1 。(6)换码序列所谓换码序列是用反斜线后面跟有一个字符或者一个或不超过3 个的数字来表示的控制代码的换码序列如下表所示,它们的表示形式是在反斜线后面跟有一个小写英文字母。例如, 'a' , '', ''', '056', 'x05a'4、 什么叫说明语句怎样说明的变量为局部变量怎样说明的变量为全局变量答:一般来说, 变量在使用以前,必须说明才能使用。用来说明已有类型的变量的语句称为变量说明语句。变
9、量说明的一般形式是:<存储类型 ><数据类型><变量名 > ;在上面变量说明的式子里,<变量名 >之后有一个分号“; ”意味着它是一个语句,该语句我们通常称为变量的说明语句。在函数体或程序段内说明的变量只能在定义它的函数体内或程序段内可以访问,这种变量通常称为局部变量; 在函数体外说明的变量可以在说明它的文件中所有函数里或程序段中访问,也可以通过extern 被其它文件中的函数或程序段访问,这种变量通常称为全局变量。5、 说明变量时有哪些存储类型其含义是什么答: C+语言支持四种存储类型:auto, register, static 和 exte
10、rn 。(1) auto 称为自动型也称为堆栈型, 用 auto 存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。(2) register 称为寄存器型,使用 register 关键词说明的变量主要目的是想将所说明的变量放入 CPU的寄存器存储空间中,这样可以加快程序的运行速度。(3) static称为静态存储类型,在 C+语言中, 既可以在函数体内,也可在函数体外说明static存储类型的变量。在函数体内说明的static存储类型的变量也是一种局部变量,与auto最大不同点是: static 存储类型的变量在内存中是以固定地址存放的
11、,而不是以堆栈方式存放的;只要整个程序还在继续运行静态变量就不会随着说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。(4) extern 称为外部参照引用型,使用 extern 说明的变量是想引用在其它文件中函数体外部说明的变量。 当变量在一个文件中的函数体外说明, 所有其他文件中的函数或程序段都可引用这个变量。这种变量的作用域是所有的函数和程序段,一般用于在函数之间传递数据。6、 什么叫常量化变量其作用是什么所谓常量化变量是指将一个变量说明为一个常量。作用:当一个变量被说明为常量时,那么该变量在程序执行过程中其值是不能改变的。也就是
12、说, 不能再向常量化的变量再赋值。因此,常量化变量在说明时就必须赋给一个数值。常量化的变量基本上和常量一样。7、 什么叫数组 说说 short 型的数组与char 型的数组的异同点。答:所谓数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。数组中各元素的数据类型要求相同。数组可以是一维的,也可以是多维的。char 型的数组 由包含 ASCII字符集中的字符 (英文字母、 数字、标点符号以及某些特殊符号)的整数类型组成的数组。short 型的数组是由 short 数据类型组成的数组。 类型型,它占用字节的长度大于类型 char, 小于或等于类型shortint 。(或s
13、hort int)是一种短整数类8、 什么叫表达式什么叫表达式语句答:所谓表达式是指由运算符、 运算量和标点符号组成的有效序列, 其目的是用来说明一个计算过程。表达式可以独立形成语句,该语句称为表达式语句9、 什么叫左值什么叫右值答:所谓左值是指能够出现在赋值表达式左边的表达式。所谓右值是指只能出现在赋值表达式的右边的数值。第四章指针1、什么叫内存单元的地址什么叫指针答:在计算机内部的存储器(简称内存)中,每一个字节单元,都有一个编号,称为地址。内存单元的编号,称为内存单元的地址。在 C+语言中,内存单元的地址称为指针。2、什么叫指针变量什么叫指针的目标答:专门用来存放地址的变量,称为指针变量
14、 (pointer variable) 。指针指向的内存区域中的数据称为指针的目标。3、什么叫空指针其作用是什么答:所谓空指针就是指针变量的内容为零的状态。4、指针运算的实质是什么答:指针运算是以指针变量所存放的地址量作为运算量而进行的运算。因此,指针运算的实质就是地址的计算。5、指针有哪些运算请枚举这些计算。答:指针运算的种类是有限的,它只能进行算术运算、关系运算和赋值运算。6、什么叫数组的指针什么叫指针数组的指针答:在C+语言中,数组的指针是指数组在内存中的起始地址。指针变量数组和普通的一般变量数组一样,编译系统在处理指针数组说明时, 按照指定的存储类型为它在内存中分配一定的连续存储空间,
15、 这时指针数组名就表示该指针数组的存储首地址,即指针数组的指针。7、什么叫二级指针变量什么叫多级指针变量答:对于指向处理数据的指针变量称为一级指针变量, 简称一级指针。 而把指向一级指针变量的指针变量称为二级指针变量, 简称二级指针。 我们把一个指向指针变量的指针变量,称为多级指针变量。8、 new 运算符的作用是什么delete 运算符的作用是什么答:运算符new 主要用于分配内存,并获得分配到的内存的首地址,通常需要将其赋给相应数据类型的指针。如果程序中不再需要由new 分配的内存空间时,用运算符delete释放这些空间。9、什么叫引用答:所谓引用是指给一个变量或一个数组起一个别名。使用引
16、用进行运算的实质是操作原来的变量或数组本身的另一个使用名称。10、 const 型指针有几种形式其作用是什么答: const 型指针主要有下面三种形式:( a ) 常量化指针目标表达式:常量化指针目标是限制通过指针改变其目标的数值。( b ) 常量化指针变量:常量化指针变量,使得<指针变量 >的地址值不能修改。但可以通过 *< 指针变量名称 >可以修改指针所指向变量的数值。( c ) 常量化指针变量及其目标表达式: 常量化指针变量及其目标表达式, 使得既不可以修改 <指针变量 >的地址,也不可以通过 *< 指针变量名称 >修改指针所指向变量的值。
17、11、什么叫void 型指针其作用是什么void 型的指针变量是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量或数组。第五章函数与宏1、 请给出函数概念的基本描述。答:函数就是一个完成特定功能的代码模块, 其程序代码独立, 通常要求有返回值,也可以是空值。2、 什么叫函数原型答:函数原型是指由函数定义中抽取出来的能代表函数应用特征的部分, 包括函数的数据类型、函数名称、形式参数说明。3、 什么叫函数的实参什么叫函数的形参答:实参是在调用函数过程中传递给被调用函数的参数;形参是被调用函数接受调用函数传递过来的数据的参数。4、 请说出函数参数为一般变量的复制传递
18、方式、地址传递方式和引用方式的异同点。答:复制传递方式是实参的数据拷贝给了形参变量,实参和形参是具有相同数据类型但存储空间是不同的两组空间。 在复制传递方式下, 被调用函数里对形参的操作不能改变实参的内容。地址传递方式和复制传递方式正好相反,用函数的参数本身传给被调用函数。被调用函数中对形参的操作将直接改变实参的值。调用函数将实参的地址传送给被调用函数,被调用函数对该地址的目标操作即对实参本身的操作。 按地址传递 ,实参为变量的地址,而形参为同类型的指针。引用方式和地址传递方式的效果一样,但引用更直接、更方便。按引用传递,实参为变量,形参为同类型的引用。采用引用方式实参和形参使用的是相同的内存
19、空间,只是名称不同而已。5、 数组在函数间传递形式有哪些并给以比较和解释。答:数组在函数间的传递形式有复制传递方式、地址传递方式、引用方式和全局数组传递方式。函数与函数之间数组的复制传递方式是调用函数将实参数组传递给被调用函数形参,形参接收是实参的地址。函数与函数之间数组的地址传递方式是将调用函数中的实参数组的起始地址传递给被调用函数的指针变量形参。被调用函数中对形参地址的目标操作,相当于对实参本身的操作, 将直接改变实参数组的值。 地址传递方式 ,实参应该为数组的指针, 而形参应为同类型的指针变量。另外,数组的地址传递方式不仅要把实参数组的指针作为参数传递给函数,同时还需要传递数组的长度。与
20、引用方式不同的是被调用函数的形参应声明为数组同类型的指针变量。函数与函数之间数组的引用传递方式需将被调用函数的形参说明为数组的引用形式。在被调用函数中,对形参进行操作就是对实参数组的直接操作。数组的引用方式和地址传递方式的作用效果基本一样,但引用更直接、更方便。按引用方式传递数组,形参为实参同类型的数组引用。但引用数组名不是指针变量,不能作为左值。6、 什么叫函数指针什么叫指针函数答:函数指针是一个函数执行代码的起始地址。 指针函数是指一个函数的返回值为地址量的函数。7、 什么叫内联函数答:内联函数是类声明体里定义的函数或在类的实现部分定义的、其前用inline 修饰的函数;它将简单的函数(其
21、内不能有循环语句和开关语句)" 内嵌 " 到调用他的程序代码中 ,这样做的目的是为了节省了调用函数的开销。8、 什么叫函数重载答:函数重载是指使用一个函数名称定义了多个完成不同功能的函数,这些函数的输入参数类型或个数不一样,相应的函数类型也有可能改变。9、 什么叫预编译语句在 C+程序的源代码中可以包括各种编译用的命令语句,这些语句都称为预编译语句。10、 什么叫宏谈谈带参数宏与内联函数之间的异同点.答:宏是指定义一个标识符来代替一个字符序列。内联函数和宏都是在程序出现的地方展开, 是在调用该函数的程序处或应用宏处将它展开。但内联函数可以多行的程序段,而宏通常是单行代码段。
22、11、 什么叫递归函数简述其执行过程。答:递归函数是指一个函数的函数体中直接调用或间接调用了该函数自身的函数。递归函数调用的执行过程分为两个阶段:( 1)递推阶段:从原问题出发,按递归公式递推,从未知到已知,最终达到递归终止条件。( 2)回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。第六章自定义数据类型1、 什么叫结构体数据类型答:结构体数据类型是由若干个数据成员组成的构造类型,每个成员可以是一个基本的数据类型,也可以是一个已经定义的构造数据类型,各个成员占据不同的存储空间。2、 什么叫联合体数据类型答:联合体数据类型是一种混合数据使用的数据类型,它的各个成员虽然是
23、存储不同数据类型的数据, 但使用时改变其一个数据成员的数值将会影响其它数据成员的数值,各个成员共享其占用空间最多的成员所分配的存储空间。3、 在 C+语言中,请说明结构体和联合体的异同点。答:结构体数据类型的变量可以同时存储int 、 long、 char 和 double 型等已有数据类型的数据,这些数据使用不同的存储空间,而联合体虽然表面上可以存储int 、 long、char或 double 等已有数据类型的数据,但它们共享其占用空间最多的成员所分配的存储空间,对某个成员赋值将影响其它成员的数值。4、 结构体数据作为参数在函数间传递有哪几种方式请指出它们的异同点。答:结构体作为参数在函数
24、之间进行传递主要有下列三种方式:复制传递方式:把调用函数中结构体实参的值复制给被调用函数的形参构体地址传递方式:将调用函数中实参结构体的地址传递给被调用函数形参的结构体指针。引用方式: 被调用函数的形参应该说明为引用结构体变量形式。实际上, 它是为实参结构化起一个别名。另外,还可以通过全局变量的方式在函数间进行数据传递,但这种方式不好,增加函数之间的耦合性。地址传递方式要比复制方式效率高。结构体复制传递方式需要对实参做一个备份,它把一个结构体变量作为参数传递, 但要将结构体全部成员值一个一个传递 ,费时间又费空间,开销大。如果结构体的成员较多,则程序运行效率会大大降低 ,而采用地址传递方式将结
25、构体变量的地址作为函数参数比较好,能提高运行效率。复制传递方式不影响调用函数实参的数值,而地址传递方式有可能影响实参的数值。第七章类与对象a) 什么叫面向对象的程序设计语言什么叫类什么叫对象什么叫消息答:在程序设计语言中 ,面向对象是指采用抽象、封装、继承、多态等程序设计的方法。因此,具有抽象、封装、继承、多态等特性的编程语言称为面向对象的程序设计语言。类实际上是一种抽象的数据类型,它将完成某特定功能所用到的数据和对数据的操作(即函数) 封装在一起。 对象是指具有某些属性和功能的单个个体。消息是对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。2、结构化程序设计方
26、法存在什么问题答:结构化程序设计方法主要存在以下问题:1)软件重用性差: 重用性是指同一软件不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一。2)软件可维护性差:软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。实践证明, 用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。3)开发出的软件不能满足用户需要:用传统的结构化方法开发大型软件系统涉及各种不同领域的知识, 在开发需求模糊或需求动
27、态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。3、 什么叫抽象什么叫分类答:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。分类就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。4、 请简述结构体、联合体和类三种类类型的异同点。答:三种类类型的异同点见下列表格:类型结构体联合体类关键字structunionclass访问权限缺省数据或函数访问公有数据或函数访问公有数据或函数访问私有成员种类数据和函数数据和函数数据和函数初始化方式可以直接初始化可以直接初始化struct 结构体类型和class 类类型都可以
28、封装数据和操作,只能间接初始化具有派生性、隐藏性和多态性。而联合体不具有派生性,但具有隐藏性和多态性。5、 什么叫根类答:根类是没有从其它类派生而创建的类类型。实际上,根据class 类类型定义的一般形式, :<基类型列表 >是一个可缺省的项;如缺省将定义一个根类。6、 类定义通常分为两部分,主要指什么答:类的定义一般分为说明部分和实现部分,说明部分放在类定义体内,用来说明该类中的数据成员和函数成员的类型和名称,是类的外部接口;实现部分常放在类体外,用以给出说明部分中声明的成员函数的定义,是类的内部实现。7、 在类定义中, 说明成员的访问权限的public 、private 和 p
29、rotected 三个关键字的作用是什么请分别简述之。答:在类定义体里,使用了private 、protected 、 public 三个关键字是用来说明数据成员和函数成员的访问权限,private 说明私有成员,该类成员只能被自己的成员函数或友元访问; protected说明保护型的成员,可以被自己的成员函数或友元访问,也可以被派生类的函数成员访问;public 说明公有成员,该类成员都可以通过对象被访问的。8、 什么叫内联函数什么叫外联函数答:将说明部分和成员函数实现部分合并在类定义体内,即将该函数定义为内联函数。若该函数语句行不多且又无循环语句和开关语句也可以成为内联函数, 只要在该函数
30、的类型说明符之前使用关键字 inline 即可。外联函数是指函数的说明放在类定义体内,而函数的定义是在类定义体外的类成员函数。9、 简述构造函数和析构函数的特点。答:构造函数是类的成员函数, 函数体可写在类定义体内,也可在类定义体外定义;它是一个特殊的函数, 其函数名与类名相同,该函数不指定类型说明,它有隐含的返回值,该值由系统内部使用; 该函数可以没有参数,也可以有一个或多个参数,即构造函数可以重载,可以定义具有不同数据类型或不同参数个数的构造函数; 另外,程序中不能直接调用构造函数,在创建对象时系统将自动调用构造函数。析构函数也是类中的成员函数,其定义的函数体可写在类定义体内,也可在类定义
31、体外;它也是一个特殊的函数,它的名字与类名相同,但在其前面要加上“”字符,用来区别于构造函数; 析构函数也不指定数据类型,并且也没有形式参数;但一个类中只可以定义一个析构函数;析构函数还可以被调用,也可以被系统自动调用。10、为什么要用拷贝构造函数它有哪些特点答:拷贝构造函数是一种特殊的构造函数,它的功能是用一个已有数值的对象赋值给另一个同类的一个对象。拷贝构造函数是构造函数,但它是在赋值时被调用,将一个已有数值的对象的数据成员的值拷贝给另一个同类的对象的对应数据成员。拷贝构造函数的特点如下:(1) 该函数名同类名,因为它也是一种构造函数,并且该函数也不被指定返回类型;(2) 该函数只有一个参
32、数,并且是对同类的某个对象的引用;(3) 每个类都必须有一个拷贝构造函数;(4) 在新建对象时,对对象进行初始化时调用,对象之间赋值不调用。11、简述深拷贝和浅拷贝。答:如果一个类的数据成员需要使用动态分配的堆资源,并且这个类的对象之间发生了数据成员拥有的堆资源复制过程的时候,这个过程就可以叫做深拷贝,反之,对象存在数据成员拥有堆资源但复制过程并未实现数据成员拥有堆资源的复制情况视为浅拷贝。12、 this 指针有什么作用答: this 是专门指向类对象自身的地址常量,是一个隐含式的指针,也就是说使用它时不需要自己去定义就可使用,而是由系统自己设定的。另外,它也隐含于每一个成员函数中,也就是说
33、类的每一个成员函数都有一个this 指针,它指向了该函数所属类的对象。this 是指向对象自己的指针,* this就是对象自己。this 指针只能在某一个类的函数体内使用,其他地方无意义。 该指针指向类的一个实例,实际上,该指针指向当前正在操作的应用对象自身。13、简述类中使用常对象和常成员函数需要注意的问题。答:使用常对象和常成员函数需要注意以下问题:(1)常对象在说明时必须进行初始化,而且不能被更新。常对象还可以作为类的成员。(2)const是函数类型的一个组成部分,因此在函数实现部分也要带有const关键字;(3)在常成员函数里不能更改所属类的数据成员,也不能调用该类中没有用const修
34、饰的类的成员函数;(4)常对象只能调用它的常成员函数,而不能调用其他的成员函数;(5)const 关键字可以用于进行函数重载的区分。其重载的原则是:常对象只能调用常成员函数,一般对象调用一般成员函数。第八章派生与继承1、试比较类的三种继承方式public , protected , private 之间的差别。答:不同的继承方式, 导致不同访问属性的基类成员在派生类中的访问属性也有所不同:公有继承,使得基类 public( 公有 )和 protected( 保护 )成员的访问属性在派生类中不变,而基类 private( 私有 )成员不可访问。私有继承,使得基类public( 公有 )和 pro
35、tected( 保护 )成员都以private( 私有 )成员身份出现在派生类中,而基类private( 私有 )成员不可访问。保护继承中,基类public( 公有 )和 protected( 保护 )成员都以protected( 保护 )成员身份出现在派生类中,而基类private( 私有 )成员不可访问。2、简述派生类的构造函数和析构函数的执行次序。答:在派生与继承的层次结构中,当说明一个派生类的对象时,系统先执行各个基类的构造函数, 先对基类成员进行初始化,然后再执行派生类的构造函数;若某一个基类也是派生类, 则这种执行基类的构造函数的过程需要递归进行下去。在继承链中, 构造函数的执行原
36、则是:先执行基类的构造函数,再执行派生类的构造函数。当一个派生类的对象使用完毕撤消时,析构函数的执行顺序正好与构造函数的执行顺序相反。即:先执行派生类的析构函数,再执行基类的析构函数。3、什么叫做虚基类有何作用答:当某类的部分或全部直接基类是从另一个基类派生而来,这些直接基类中,从上一级基类继承来的成员就拥有相同的名称,派生类的对象的这些同名成员在内存中同时拥有多个拷贝, 我们可以使用作用域分辨符来唯一标识并分别访问它们。我们也可以将直接基类的共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只拥有一个拷贝,这样就解决了同名成员的唯一标识问题。虚基类的声明是在派生类的定义过程,其
37、语法格式为:class 派生类名: virtual继承方式基类名上述语句声明基类为派生类的虚基类,在多继承情况下,虚基类关键字的作用范围和继承方式关键字相同,只对紧跟其后的基类起作用。声明了虚基类之后,虚基类的成员在进一步派生过程中,和派生类一起维护一个内存数据拷贝。第九章友元与静态成员1、 什么叫友元友元有哪些答:友元指的是一种特性,通过这种特性能够利用某些特定的全局函数或类的成员函数对某类的私有成员进行存取。C+语言中的友元分为友元函数和友元类。2、 请给出友元函数与友元类的说明方法。答:友元函数的说明方法:friend<返回值类型><类名 >(<参数说明列表
38、>);友元类的说明方法:friendclass<类名 >3、 简述使用友元的利弊。答:使用友元的益处:在有些情况下,能够利用某些特定的全局函数或类的成员函数对某类的隐藏成员进行存取的这种特性是非常方便的,避免了将类中所有成员都设定为公有成员;使用友元的弊端: 虽然声明友元可以方便的对类的非公有数据进行访问, 但同时破坏了类的封装与信息隐藏性,并且难以维护。4、 试说明使用静态成员的目的静态成员跟全局变量相比有哪些优点答:使用静态成员的目的:实现数据共享。静态成员相较于全局变量的优点:1)静态成员名称的作用域只限定于定义它的类中,因此避免了与具有相同名称的其他类的成员或者相同名
39、称的全局变量发生命名上的冲突。.2)定义静态成员保证了类的封装性。因为静态成员可以被定义成类的私有成员而全局变量却不能。3)静态成员必然是跟程序中特定的类相关联的,这将有利于程序编写者说明定义这个成员的意图,而在外部定义的全局变量有时是晦涩难懂的。5、 静态数据成员是否可以通过对象来对其进行访问并简要的给出相应的说明。答:可以。因为用对象去引用静态成员函数,只是用其类型。6、 所有静态数据成员的初始化都不能在类的内部完成是否正确如果不正确,请举出相应程序的例子来说明。答:不正确。举例见程序例。7、 如果静态成员函数访问了非静态数据成员会出现怎样的错误并说明原因。答:将提示非法操作,静态成员函数无法访问非静态数据成员。由于静态成员函数不与任何类的对象相联系,故不能对非静态成员进行默认访问。第十章虚拟函数与多态性1、在 C+中运行时多态性是通过什么方式来实现的答:在 C+ +语言中,使用重载、模板和虚函数等概念来支持多态性。2、函数重载与虚拟函数有哪些相同点与不同点答:相同点:函数重载和虚函数都是用来支持多态性的。不同点:函数重载用来实现的是编译时的多态性,虚函数用来实现的时运行时的多态性。3、虚拟函数是如何实现面向对象编程的多态性的,它会带来什么益处答:虚拟函数的运用使操作不在编译时被关联到指针的原始类型的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商品质量问题调查合同(2篇)
- 陕西交大附中2025年高三历史试题含附加题含解析
- 陕西电子信息职业技术学院《人类学英文文献导读》2023-2024学年第一学期期末试卷
- 性教育:如何保护自己
- 关于对外投资合同样本
- 损耗基础知识
- 2024年份第四季度行政文书智能校对系统整合古典语法规则
- epc框架合同范例
- 保险赔付合同标准文本
- ups维修合同标准文本
- 邢台2025年河北邢台市高层次人才引进1025人笔试历年参考题库附带答案详解
- 第三单元 圆柱与圆锥 单元测试(含答案)2024-2025学年六年级下册数学人教版
- XX乡镇履职事项清单表(1356项)
- 2025年共青团入团考试测试题库及答案
- 2021年同等学力申硕《临床医学》试题真题及答案
- 地铁保安服务投标方案(技术方案)
- 《企业研发费用税前加计扣除政策解读与应用课件》
- 2025年湖北国土资源职业学院单招职业技能测试题库及答案一套
- 七年级数学下册 第8章 单元测试卷(苏科版 2025年春)
- 2024年煤矿安全管理人员考试试题库(含答案)
- 小学科学实验教学与现代教育技术融合研究
评论
0/150
提交评论