0523《C++程序设计》2018年6月期末考试指导

发布时间:2023-11-21 12:11:22浏览次数:3
0523《C++程序设计》2018 年 6 月期末考试指导一、考试说明(一)说明满分为 100 分,考试时间为 90 分钟, 考试形式为闭卷。(二)题型及各题型所占分数和相应的答题技巧单选题(每题  分,共  题,总计  分)答题技巧:选择最正确的那个选项,可以考虑排除法等选择技巧。填空题(每题  分,共  题,总计  分)答题技巧:先定位考察的知识点是什么,再用专业的术语作答,答案尽量言简意赅。.编程题(每题  分,共  题,总计  分)答题技巧: 按照题目要求,用标准的程序书写,注意细节。二、复习重点内容第二章 C++简单程序设计1、C++的特点 全面兼容 C,语言对  语言做了些改进, 语言是 语言的一个子集。 支持面向对象的方法。在 中,封装性、继承性和多态性是面向对象思想的主要特征。2、C++程序的结构特征程序通常由包括 在内的一组函数组成,函数是构成 程序的基本单位。其中名为  的函数称为主函数,可放在程序的前部、中部和后部,不论放在程序的什么部位,它总是第一个被执行的函数。因此,一个可运行的 程序必须有主函数。其他函数都是被调用函数,它们可以是系统提供的库函数,也可以是用户自己编写的函数。用户自己编写的函数在使用前应给予“声明”。可以说,是函数式的语言,程序的全部操作都是由函数完成的。将 源程序进行编译可得到目标文件。3、运算符与表达式运算符:如,等。 表达式:由运算符、操作数和括号组成,不带分号。()算术运算符与算术表达式基本算术运算符若整数相除,结果取整(取余,操作数为整数)优先级与结合性:先乘除,后加减,同级自左至右进行运算(自增、自减) 例:()赋值运算符与赋值表达式简单的赋值运算符表达式的类型:等号左边对象(或变量)的类型表达式的值:等号左边对象(或变量)被赋值后的值复合的赋值运算符()关系运算与关系表达式关系运算是一种比较简单的逻辑运算,优先次序为:  首先定义一个具有  个 " 类型数据的数组 ,然后定义 " 类型指针 9"#,并用数组名表示数组首地址来初始化指针。()对象指针与基本类型的变量一样,每一个对象在初始化之后都会在内存中占有一定的空间。因此,既可以通过对象名也可以通过对象地址来访问一个对象。虽然对象同时包含了数据成员和成员函数两种成员,但与一般变量略有不同的是,对象所占据的内存空间只是用于存放数据成员的,而成员函数则不在每一个对象中存储副本。声明形式:类名 对象指针名例:U "U "9"#9"#+通过指针访问对象成员:对象指针名成员名9"#V%")相当于 9"#V%")3、动态内存分配在 中,动态内存分配技术可以保证程序在运行过程中按照实际需要申请适量的内存,使用后还可以释放。这种在程序运行过程中申请和释放的存储单元称为堆对象,申请和释放过程称为建立和删除。在 程序中建立和删除堆对象使用两个运算符:%2 和 5%!%"%。()动态申请内存操作符 %2%2类型名 ?(初值列表)功能:在程序执行期间,申请用于存放 ? 类型对象的内存空间,并依初值列表赋以初值。结果值:成功:? 类型的指针,指向新分配的内存。失败:(<;WW)()释放内存操作符 5%!%"%5%!%"%指针 U功能:释放指针 U 所指向的内存。U 必须是 %2 操作的返回值。第七章 继承与派生1、类的继承与派生以原有的类为基础产生新的类,就是说新类继承了原有类的特征,也可以说是从原有类派生出新类。继承具有传递性。通过 中的继承机制,可以从现存类中构建其子类。类的派生机制的好处在于代码的重用性和可扩充性,即:可以充分利用别人做过的研究和已有的分析和解决方案。派生新类的过程一般包括:①吸收已有类的成员、②调整已有类成员、③添加新成员 个步骤。继承的目的:实现代码重用。在类继承中,缺省的继承方式私有继承。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。()派生类生成过程派生新类的  个步骤:吸收基类成员实现代码重用改造基类成员实现代码扩充 添加新的成员实现代码扩充2、类型兼容规则类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。具体表现在: 派生类的对象可以隐含转换为基类对象。 派生类的对象可以初始化基类的引用。1 派生类的指针可以隐含转换为基类的指针。在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员。class B {…};class D : public B {…};B b1, *pb1;D d1; 派生类对象可以隐含转换为基类对象 b1=d1; 派生类的对象也可以初始化基类对象的引用 B &rb=d1;1 派生类对象的地址也可以隐含转换为指向基类的指针 pb1=&d1;根据类型兼容规则,可以在基类对象出现的场合使用派生类对象进行替代,但是替代之后派生类仅仅发挥出基类的作用。因为,在替代之后,派生类对象就可以作为基类的对象使用,但通过基类对象名、指针只能使用从基类继承的成员。3、派生类的构造函数构造派生类的对象时,就要对基类的数据成员和派生类新增的数据成员进行初始化。()单一继承时的构造函数派生类名66派生类名基类所需的形参,本类成员所需的形参6基类名参数表-本类成员初始化赋值语句.()构造函数的调用顺序 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。 调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。1 派生类的构造函数体中的内容。第九章 流类库与输入输出1、I/O 流的概念及流类库结构F> 流类列表: 类名 说明 包含文件 抽象流基类  '流基类 '输入流类  '"#% &'"#% '"# V'"#%通用输入流和其他输入流的基类文件输入流类字符串输入流类 '"#%& '"#%''"#%输出流类 '"#% & '"#% '"# V'"#%通用输出流和其他输出流的基类文件输出流类字符串输出流类 '"#%& '"#%''"#%输入输出流类  '"#%& '"#%'"# V'"#%通用输入输出流和其他输入输出流的基类文件输入输出流类字符串输入输出流类 '"#%& '"#%''"#%流缓冲区类 '"#%$& X ! %$& '"# V$& 抽象流缓冲区基类磁盘文件的流缓冲区类字符串的流缓冲区类'"#%$& & '"#%''"#% 三、重点习题(一)单选题、在以下各选项中,均为 保留字的为【 】。G、%$(!$5%( $ N、"(!''(、Y "5 $!% B、(3#"(!$5%、已知有定义“"( '""(K下列符合 语法的表达式为【 】G、( N、 、(HB、、下面程序【 】。Z(!$5% '"#%$'V%'9(%'"5"-")5 -))).23!%)( $")#%"$#.G、是死循环 N、循环执行一次 、循环执行两次 B、有语法错误、假设 ,执行下列语句后  的值为【 】。'2"(3-('%6('%6('%6#%7('%65%&$!"6 .G、 N、 、 B、、下面程序的运行结果为【 】。Z(!$5% '"#%$'V%'9(%'"5J 5:29"+"-""%9"%9"%9."-":29( $"%5!#%"$#.G、2,3 N、3,2 、2,2 B、3,3H、下面程序的运行结果为【 】。Z(!$5% '"#%$'V%'9(%'"5")(!'':9!%-9$!(6J 5"""-)66)*.J 59#"[-( $").J 59#"\9#J"%6")*."-:9!%(("(9#"\#%"$#.G、20 N、23 、43 B、程序有错误,不能连接执行I、下面程序的运行结果为【 】。Z(!$5% '"#%$'V%'9(%'"5"((!''G-9#J"%6""( '""("9$!(6G-(.J 5'%"-.J 5'%"-.J 5'%"(-(.J 55'9!*-( $"(.."G66"-G'%"'%"'%"('%"'%"'%"(5'9!*#%"$#.G、1 2 1 N、1 2 2 、1 1 2 B、2 2 2O、下面程序的运行结果为【 】。Z(!$5% '"#%$'V%'9(%'"5J 5&$""-"&$#%"$#.J 5&$"-'""(")"*&-)*( $")]]*]]&$..G、语法错误,不能输出正确结果 N、2 2 2 2 、2 2 3 3 B、2 2 3 2R、以下程序的输出结果是【 】。Z(!$5% '"#%$'V%'9(%'"5(!''N'%- "9$!(6N'%")"*-)*.J 5'3 2-( $"]]%5!..(!''B%#J%569$!(N'%-"(59$!(6B%#J%5")"*"M"6N'%)*-(M5.J 5'3 2-( $"(]]5%5!.."-N'%N9B%#J%5B9+B9'3 2#%"$#.G、 N、 、 B、、假定已定义实型变量 5",以二进制方式把 5" 的值写入输出文件流对象 $"X!%中去,正确的语句是【 】。G、 $"X!%2#"%Y "+5"'M% &Y "N、 $"X!%2#"%Y "+5"5"、 $"X!%2#"%(3#+5"'M% &Y "B、 $"X!%2#"%(3#+5"5"、在下列关于 关键字的说法中,正确的是【 】。G、关键字是用户为程序中各种需要命名的“元素”所起的名字N、关键字是对程序中的数据进行操作的一类单词、关键字是在程序中起分割内容和界定范围作用的一类单词B、关键字是 中预定义并实现一定功能的一类单词、若定义:Y ")",则正确的 '2"(3 语句为【 】。G、 N、'2"(3 - '2"(3) -('%6( $" ('%6( $"('%6( $" ('%6( $". .、 B、'2"(3 - '2"(3 -('%6( $" ('%6( $"('%6( $" ('%6( $". .、下面程序的输出结果是【 】。Z(!$5% '"#%$'V%'9(%'"5 "-")& #"-)&)&)&)I( $")]].( $"%5!#%"$#.G、RO N、O 、HHO B、OI、下面程序的输出结果是【 】。Z(!$5% '"#%$'V%'9(%'"5(!''G-"9$!(6G-.G"-( $".J 5'3 2-( $".."-G)*M( $"%5!#%"$#.G、 N、 、 B、、下面程序的输出结果是【 】。Z(!$5% '"#%$'V%'9(%'"5(!''G(!''N-"9$!(6N")-).&#%5G.(!''G-" 9$!(6"'%"N+"V%"-#%"$#.G")-).."G66'%"N+-#%"$#."-GN'%"( $"V%"%5!#%"$#.G、 N、 、 B、H、【 】是给对象取了一个别名,它引入了对象的同义词。G、指针 N、引用 、枚举 B、结构I、有以下程序:Z(!$5% '"#%$'V%'9(%'"5"&")"*-&)*#%"$#)%!'%#%"$#*."-"IO9S#9+S+#&9S( $"9]]S]]##%"$#.执行后输出的结果为【 】。G、IOO N、IOI 、OII B、OIOO、使用如 '%"2的操作符对数据进行格式输出时,应包含【 】文件。G、 '"#% N、&'"#% 、'"5 B、 9R、重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是【 】。G、一元非成员运算符 N、二元非成员运算符 、一元成员运算 B 、 二 元 成员运算符、在下列运算符中,【 】运算符在 中不能重载。G、 N、 、 B、(二)填空题、以下程序运行的结果为【 】。Z(!$5% '"#%$'V%'9(%'"5(!'':9!%-" 9$!(6:9!%:9!%"J!J 5B'9!*L:9!%.:9!%66:9!%-( $" '"#$(" #%5!.:9!%66:9!%"J!-( $" '"#$(" #%5!J!.J 5:9!%66B'9!*-( $"%5!.:9!%66L:9!%-( $"B%'"#$(" #%5!."-:9!%B'9!*B'9!*#%"$#.、以下程序输出的结果是【 】。Z(!$5% '"#%$'V%'9(%'"5J 5&"+)"+*-"M))**M.J 5&")"*-"M))**M."-")*)*H( $")*)*%5!&)*( $")*)*%5!&+)+*( $")*)*%5!)* &*)( $")*)*%5!#%"$#.、以下程序的执行结果是【 】。Z(!$5% '"#%Z(!$5% 9$'V%'9(%'"5(!'':9!%-")9$!(6J 5'%")"-)."9$")-#%"$#).."-:9!%9:9!%GPQGPQ'%")GPQ'%")HGPQ'%")I& #"-9+GPQ( $"99$").( $"%5!#%"$#.、程序的执行结果是【 】。Z(!$5% '"#%$'V%'9(%'"5(!''G-"9$!(6J 5'%"")-).J 5'3 2-( $"%5!..(!''N-"9$!(6J 5'%"")-).J 5'3 2-( $"%5!..(!''69$!(G9#J"%N- 优先级相同(高) 优先级相同(低)关系表达式是一种最简单的逻辑表达式,其结果类型为  !,值只能为 "#$%或&!'%。例如:,(,)*()逻辑运算与逻辑表达式 逻辑运算符非++与,,或优先次序: 高 → 低 逻辑表达式例如:++)*或:++)*其结果类型为  !,值只能为 "#$%或&!'%4、算法的基本控制结构算法的基本控制结构有 3 种:顺序结构、选择结构和循环结构()用 & 语句实现选择结构一般形式:&表达式语句 或者 &表达式语句 %!'%语句 注意:& 语句适用于条件判断比较复杂的分支结构。()多重选择结构 嵌套的 & 语句一般形式:&表达式 &表达式 语句 %!'%语句 %!'%&表达式 语句 %!'%语句 注意:语句 、、、可以是复合语句,每层的 &与 %!'%配对,或用 -.来确定层次关系。如果省略某一个 %!'%,便要用-.括起该层的 &语句来确定层次关系。嵌套 &语句采用就近匹配的原则。&/%!'%&语句一般形式: &表达式  语句 %!'%&表达式 语句 %!'%&表达式 语句 /%!'%语句 注:%!'%语句 00相当于“收容队”,即:不符合表达式 0表达式  的所有情况,都由这个“收容队”处理。1'2"(3语句在 &表达式  语句 %!'%&表达式 语句 %!'%&表达式 语句 /%!'%语句 中,虽然可以进行多次判断选择,但是每一次都是判断不同的表达式(表达式 0表 9#J"%6"(9$!(6J 5'%"(")"*"M-(M'%")'%"*.J 5'3 2(-( $"(%5!.."-(('%"('3 2('%"(('3 2(#%"$#.、以下程序的执行结果是【 】。Z(!$5% '"#%$'V%'9(%'"5(!'''%-9$!(6J#"$!J 5&-( $"&&$("  &'%%5!.J#"$!J 5&-( $"&&$("  &'%%5!.J#"$!J 5&-( $"&&$("  &'%%5!.J 5&-( $"&&$("  &'%%5!..(!''5%#J%69$!('%-J 5&"'-( $"&&$("  &5%#J%%5!.J 5&-( $"&&$("  &5%#J%%5!.J 5&-( $"&&$("  &5%#J%%5!.."-'% 95%#J% 9+ 9&9&9&9+ 9&9&9& #%"$#.H、下面程序的输出结果是【 】。Z(!$5% '"#%$'V%'9(%'"5"-"99%2"9( $"95%!%"%9#%"$#.I、设置虚基类的目的是【 】。O、在下面程序中的加粗方括号中填写适当的语句,使程序的输出结果为:B%'"#$(" #NB%'"#$(" #GZ(!$5% '"#%$'V%'9(%'"5(!''G-9$!(6G-.【 】-( $"B%'"#$(" #G%5!..(!''N69$!(G-9$!(6N-.LN-( $"B%'"#$(" #N%5!.."-G9%2N5%!%"%9#%"$#.R、下面程序的运行结果为【 】。Z(!$5% '"#%Z(!$5%&'"#%$'V%'9(%'"5 "- &'"#% $"&"%9 '66"#$( $"&A #!52 5%#&$! $"&(! '%&'"#%&"%9(3#'PQ&'&(! '%( $"'#%"$#.、一般说来,要在 中重载运算符^,只需定义一个名为【 】的一个函数就可以了。(三)编程题、编写程序,打印出三个输入整数中的中间值。、生成一个 ?#V  类表示三角形,三边的长度作为其  个数据成员。编写一个求三角形 条边之和的函数 '$?#V "#00注意:其函数参数为 ?#V  类的对象,并将它声明为 ?#V  的一个友元函数。实例化一个对象 "#,三边分别为 、、。利用 '$求出该三角形的周长。定义 ?#V  类,包含  个数据成员 、 和 ( 分别表示三角形三边的长度,数据类型为 Y ",并将函数 '$声明为其友元函数。程序执行结果为:边长为 、、 的三角形的周长为:四、重点习题参考答案(答案仅供参考)(一)单选题、B、N、N、N、BH、BI、GO、BR、G、、B、G、B、N、BH、NI、NO、BR、、G(二)填空题、( '"#$(" # '"#$(" #B%'"#$(" #B%'"#$(" #)、()*H)*H)*H)*)、(HI) 、()、(&&$("  &'%&&$("  &'%&&$("  &'%&&$("  &'%&&$("  &5%#J%&&$("  &'%)H、()I、(消除二义性)O、(J#"$!LG)R、(A #!5)、( 9%#" #^)(三)编程题、【答题方法】Z(!$5% '"#%$'V%'9(%'"5"-"( $"请输入三个整数:(( $"中间值:&&( $"%!'%&( $"%!'%( $"%!'%&( $"%!'%&( $"%!'%( $"( $"%5!#%"$#.运行结果:请输入三个整数:中间值:、【答题方法】Z(!$5% '"#%$'V%'9(%'"5(!''?#V -9#J"%6Y "(9$!(6?#V Y ")Y "*Y "M- )*(M.&#%5Y "'$?#V "# 声明友元函数.编写函数 '$Y "'$?#V "#-#%"$#"#"#"#(.实例化一个三角形对象,其三边长度为 、 和 ,利用函数 '$求其周长"-?#V "#( $"边长为 、、 的三角形的周长为:'$"#%5!#%"$#.考试指导说明:本考试指导只适用于 201803 学期 6 月期末考试使用,包括正考和重修。指导中的章节知识点涵盖考试所有内容,给出的习题为考试类型题,习题答案要点只作为参考,详见课程讲义或课程 ppt。在复习中有任何问题请到课程答疑区咨询。祝大家考试顺利! 达式 )。'2"(3 语句同样可以进行多次判断,并且每一次都是判断同一表达式的值。一般形式:'2"(3表达式-('%常量表达式 :语句 ('%常量表达式 :语句 4('%常量表达式 :语句 5%&$!"6语句 .执行顺序 :以 ('% 中的常量表达式值为入口标号,由此开始顺序执行。因此,每个('% 分支最后应该加 #%7 语句。 注意:('% 分支可包含多个语句,且不用-.。表达式、判断值都是 " 型或 (3# 型或枚举型。若干分支执行内容相同可共用一组语句。'2"(3 语句根据一个表达式的不同可能值决定选择执行,适用于条件判断比较简单的多路选择。1('% 语句仅仅是标号语句,没有跳转功能。要在执行分支语句后离开 '2"(3 结构,需要用 #%7 语句。()循环结构 种循环控制语句:23!% 语句、5 23!% 语句、& # 语句。23!% 语句和 5 823!%语句主要用于条件循环。& # 语句是 中很灵活的循环语句,既可以用于控制次数循环,也可以用于条件循环。设计循环结构程序时,必须要知道循环体的算法是什么,进入循环的条件是什么,结束循环的条件是什么,确保正确控制程序的流程。23!% 语句形式:23!%表达式语句执行顺序:先判断表达式的值,若为 "#$%时,执行语句。5 23!% 语句一般形式:5 语句23!%表达式执行顺序:先执行循环体语句,后判断条件。表达式为 "#$%时,继续执行循环体。用 5 /23!% 语句构成的循环,在 23!% 后的表达式为零时结束循环。1& # 语句 语法形式:& #表达式 ;表达式 ;表达式 语句执行顺序:循环前先求解表达式 ,表达式  为 "#$% 时执行循环体语句,每次执行完循环体后求解表达式 注意:23!% 循环、5 23!% 语句和 & # 语句可以互相嵌套构成多重循环结构。#%7 语句只能在 '2"(3 语句或循环体中使用。1 在 & # 循环的循环体中,可以包含多条语句,但必须用花括号括起来。5、自定义数据类型语言的数据类型包括基本数据类型(内置的、天生的)和自定义数据类型(后天的)。自定义数据类型的种类有枚举类型、结构类型、联合类型、数组类型、类类型。下面介绍两种自定义数据类型的定义方式: ()"*9%5%&声明:为一个已有的数据类型另外命名。语法形式:"*9%5%&已有类型名 新类型名表()枚举类型 %$:只要将需要的变量值一一列举出来,便构成了一个枚举类型。枚举类型的声明形式如下:%$枚举类型名 -变量值列表.例如:%$2%%75*-:;<=><?;@A@B?C;DEF:G?.2%%75*=><对枚举类型按常量处理,不能对它们赋值。例如::;<语句是非法的。%$2%%75*-:;<=><?;@A@B?C;DEF:G?.枚举元素具有默认值,它们依次是:/。例如,:;< 的值为 ,=>< 为,?;@ 为 ,…,:G? 为 H。也可以在声明时另行定义枚举元素的值,如:%$2%%75*-:;<I=><?;@A@B?C;DEF:G?.定义 :;< 为 I,=>< 为 ,以后顺序加 ,:G? 为 H。枚举值可以进行关系运算。整数值不能直接赋给枚举变量,除非进行强制类型转换。第三章 函数1、函数的定义与使用对于  语言来说,函数是划分模块的基本单位,甚至可以说  语言就是函数的语言由一个又一个函数组成。一个  程序可以由一个主函数和若干子函数构成。主函数是程序执行的开始点。由主函数调用子函数,子函数还可以再调用其他子函数。继承了  语言的全部语法,也包括函数的定义与使用方法。组成 程序的是函数。语言虽然具有“类”对数据和函数的进行进一步抽象,但是普通函数还是在语言中具有举足轻重的作用。主调函数调用其他函数的函数。被调函数被其他函数调用的函数。一个函数很可能既调用别的函数,又被另外的函数调用。所以,一个函数可能既是主调函数,同时也是被调函数。2、内联函数内联函数是一种既维持函数的模块化形式,又节省函数调用开销的妥协函数形式。虽然内联函数达到了既维持函数的模块化形式,又节省函数调用开销的目的,但是其功能大大地削弱了。内联函数只适用于一些功能简单、规模较小又使用频繁的函数,一般不要太大,0 行左右。内联函数中不能包含循环语句、'2"(3 语句和递归调用等复杂的内容。第四章 类与对象1、类和对象()类的定义类是一种用户自定义类型,声明形式:(!''类名称-9$!(6 公有成员(外部接口)9#J"%6私有成员9# "%("%56保护型成员.中类的定义结束声明的符号是类用于描述事物的属性和对事物的操作,类与类之间通过封装而具有明确的独立性。类与类之间可以通过一些方法进行通信和联络。()类的成员 成员函数 数据成员()对象一个对象由一组属性和对这组属性进行操作的一组服务组成,通俗地讲类的对象是该类的某一特定实体,即该类型的变量。声明形式:类名 对象名;对象是类的实例,为对象分配存储空间而不为类分配存储空间。对象具有多态性、继承性和封装性。()类中成员的访问方式类中成员互访:直接使用成员名类外访问:使用“对象名成员名”方式访问 9$!(属性的成员()成员函数 成员函数的实现成员函数的函数原型声明要写在类体中,函数原型说明了函数的参数表和返回值类型。成员函数的具体实现写在类定义之外。注意:实现成员函数时要指明类的名称。 成员函数调用中的目的对象调用普通函数可以直接通过函数及其参数表进行调用。调用成员函数需要通过一个对象名加上“K,再加上成员函数名及其参数才能调用。1 带默认形参值的成员函数像普通函数一样,类的成员函数也可以有默认形参值,其调用规则与普通函数相同。类的成员函数的默认值一定要写在类定义中,而不能写在类定义之外的函数实现中。(!''! (7-9$!(6J 5'%"?%"%2C"%2="%2://.2、构造函数构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。构造函数(包括析构函数)是不被继承的,所以,一个派生类只能调用它的直接基类的构造函数。在对象创建时(如:! (7时)由系统自动调用构造函数。如果程序中未声明,则系统自动产生出一个默认形式的构造函数如:! (7-.。构造函数允许为内联函数、重载函数、带默认形参值的函数。()复制构造函数 复制构造函数(拷贝构造函数)是一种特殊的构造函数,其形参为本类的对象引用。(!''类名-9$!(6类名形参 构造函数类名类名 +对象名 复制构造函数.类名66类类名 +对象名 复制构造函数的实现-函数体 .3、析构函数析构函数完成对象被删除前的一些清理工作。在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。析构函数举例:(!''! (7-9$!(6! (7构造函数J 5'%"?%"%2C"%2="%2:J 5'3 2?%L! (7-.析构函数9#J"%6"3 $#$"%'%( 5.构造函数可以重载,析构函数不能重载4、虚函数对于虚函数的调用不一定使用动态联编。带有纯虚函数的类称为抽象类。5、结构体()结构体的概念结构体是由不同数据类型的数据组成的集合体。声明结构体类型:'"#$("结构体名-数据类型 成员名 ;数据类型 成员名 ;//数据类型 成员名 ; .()结构体变量说明变量说明形式:结构体名 结构体变量名;注意: 结构体变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致。其成员默认的权限为公有的。 结构体变量说明在结构类型声明之后,二者也可同时进行。1 结构体变量占内存大小可用 'M% &运算求出:'M% &运算量 在某个程序中,要用整型数据占用内存字节数的信息。为了使该程序以后容易移植,最好使用 'M% &"来表示该字节数。()结构体变量的初始化和使用初始化:说明结构体变量的同时可以直接设置初值。结构体成员的引用形式:结构体变量名成员名第五章 数据的共享与保护1、类的静态成员面向对象的程序设计方法兼顾数据的共享与保护,将数据与操作数据的函数封装在一起,构成集成度更高的模块。类中的数据成员可以被同一类中的任何一个函数访问。在数据共享方面,除了: 函数之间的数据共享参数传递和全局变量 类内部的函数之间实现了数据共享之外,对象与对象之间也需要共享数据。静态成员是解决同一个类的不同对象之间数据和函数共享问题的。类的静态成员有静态数据成员、静态成员函数。类的静态数据成员必须进行初始化。静态成员在每个类只有一个副本,而不是在每一个对象中都存储一个副本。静态成员由该类的所有对象共同维护和使用,从而实现了同一类的不同对象之间的数据共享。在 中类的成员变量被声明为 '""((称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。2、静态局部变量定义:在局部变量前加上 '""( 关键字时,就定义了静态局部变量。通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。但有时候我们需要在两次调用之间对变量的值进行保存。通常的想法是定义一个全局变量来实现。但这样一来,变量已经不再属于函数本身了,不再仅受函数的控制,给程序的维护带来不便。静态局部变量正好可以解决这个问题。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。特点:G、该变量在全局数据区分配内存。N、初始化:如果不显式初始化,那么将被隐式初始化为 ,以后的函数调用不再进行初始化。、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。3、类的友元友元是 提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元。()友元函数和友元类在一个类中,可以利用关键字 &#%5 将其他函数或类声明为友元。如果友元是一般函数或成员函数,称为友元函数;如果友元是一个类,则称为友元类,友元类的所有成员都自动成为友元函数。  友元函数友元函数是在类声明中由关键字 &#%5 修饰说明的非成员函数,在它的函数体中能够通过对象名访问 9#J"%和 9# "%("%5 成员。访问对象中的成员必须通过对象名。作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。)必须在类的说明中说明友元函数,说明时以关键字 &#%5 开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在 9#J"% 和 9$!( 部分; )注意友元函数不是类的成员函数,所以友元函数的实现和普通函数一样,在实现时不用66指示属于哪个类,只有成员函数才使用66作用域符号; )友元函数不能直接访问类的成员,只能访问对象成员;)友元函数可以访问对象的私有成员,但普通函数不行; )调用友元函数时,在实际参数中需要指出要访问的对象,H)友元函数没有 "3' 指针I)如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是重载错误。O)当运算符左端不是类对象时,运算符重载函数可以定义为类的友元函数。重载的运算符仍然保持原来的操作数个数、优先级和结合性不变。双目运算符定义为运算符重载友元函数时,有两个参数。运算符重载不可以改变语法结构。 友元类若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。声明语法:将友元类名在另一个类中使用 &#%5 修饰说明。第六章 数组、指针与字符串1、数组 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。数组属于构造类型。数学上的数列:/中的数组:PQ、 PQ、…、 PQ()数组元素数组元素也称下标变量,用数组名与带方括号的下标表示,同一数组的各元素具有相同的类型。数组可以由除 J 5 型以外的任何一种类型构成。()数组的存储数组元素在内存中顺次存放,它们的地址是连续的。例如:具有  个元素的数组 ,在内存中的存放次序如下:数组名字是数组首元素的内存地址。数组名是一个常量,不能被赋值。()数组的声明与使用一维数组的声明:类型说明符 数组名P常量表达式 Q例如:"PQ表示 为整型数组,有  个元素:PQPRQ使用:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a  必须先声明,后使用。 只能逐个引用数组元素,而不能一次引用整个数组。例如:PQPQPIQPQ2、指针指针是 从  中继承过来的重要的数据类型,它提供了一种较为直接的地址操作手段。正确地使用指针,可以方便、灵活而有效地组织和表示复杂的数据结构。()内存空间的访问方式 通过变量名访问直接访问 通过地址访问间接访问1 地址运算符:+例:"J#则 +J#表示变量 J# 在内存中的起始地址()指针变量的声明指针也是一种数据类型,具有指针类型的变量称为指针变量。指针变量是用于存放内存单元地址的。直接访问:通过变量名访问一个变量。间接访问:通过指针访问一个变量。声明指针的语法形式:数据类型 标识符"9#"定义了一个指向 " 型数据的指针变量,这个指针的名称是 9"#,专门用来存放 " 型数据的地址。指针变量的初始化语法形式6存储类型 数据类型 指针名=初始地址;例: "9+注意事项6 用变量地址作为初时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。""9+ 可以用一个已赋初值的指针去初始化另一个指针变量。"9+"S91 不要用一个内部 $" 变量去初始化 '""(指针。"'""("9+ 错误()与地址相关的运算“K和“+KTK称为指针运算符,也称解析(5%#%&%#%(%),表示获取指针所指向的变量的值,这是一个一元操作符。例如:9"# 表示指针 9"# 所指向的 " 型数据的值。T+K称为取地址运算符,也是一个一元操作符,用来得到一个对象的地址。例如:使用+ 就可以得到变量  的存储单元地址。TK和“+K出现在声明语句中和执行语句中,其含义是不同的,要注意区分。()指针的赋值一个数组,可以用其数组名来直接表示它的起始地址。数组名实际上就是一个不能被赋值的指针,即指针常量。例如:"PQ 定义 " 型数组"9"# 定义并初始化 " 型指针
文档格式: docx,价格: 5下载文档
返回顶部