• 1.55 MB
  • 2022-04-22 11:32:18 发布

《C++语言程序设计教程》吕凤翥人民邮电出版社课后答案

  • 320页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网www.khdaw.comC++语言基础教程 课后答案网www.khdaw.com第1章C++语言概述 课后答案网www.khdaw.com¢一.面向对象的概念¢二.C++语言的特点¢三.C++程序在结构上的特点¢四.C++程序的实现 课后答案网www.khdaw.com¢一、面向对象的概念 课后答案网www.khdaw.com1.面向对象方法的由来¢ò面向对象方法是开发计算机软件的一种方法。¢ò这种方法比面向过程的方法可提高可用性,适用于图形界面的使用,减少模块间的依赖关系,有利用程序的调试和修改。¢ò该方法是一种采用了类、对象、继承和多态等新概念的新方法。 课后答案网www.khdaw.com2.面向对象的基本概念¢ò对象:描述客观事物的一种实体。¢ò类:类是一种类型,它是具有属性和行为的若干对象的集合。¢ò封装:它是指将对象的属性和行为结合成为一个独立的封装体。 课后答案网www.khdaw.com¢ò继承:它反映了一般类和特殊类之间的关系,它是面向对象方法的重要特性。¢ò多态性:它是指一种行为对应着多种不同的实现。函数重载、运算符重载和动态联编都属于多态性。 课后答案网www.khdaw.com¢二、C++语言的特点 课后答案网www.khdaw.com1.C++语言是面向对象的程序设计语言¢òC++语言支持面向对象方法的三大特性:封装性、继承性和多态性。¢òC++语言是不完全的面向对象的程序设计语言,它既有类体内函数,又有类体外函数。 课后答案网www.khdaw.com2.C++语言继承了C语言¢òC语言是C++语言的一个子集。¢òC语言是语法C++语言都可使用,包括词法规则、语法规则、函数调用和指针等。 课后答案网www.khdaw.com3.C++语言对C语言进行了改进¢C++语言针对C语言中的某些不是,做了如下改进。¢ò保留了C语言的所有运算符,为了对象操作方便,增加了5种新运算符。¢ò规定从高类型向低类型转换时需加强制转换,又规定强制转换可将(表达式)括起,而类型不括。 课后答案网www.khdaw.com¢ò使用const来定义符号常量,可指出常量表型。¢ò定义函数时不可省略函数的数据类型。¢ò说明函数时一定要用函数原型。¢ò取消了C语言规定的在函数体内说明语句应放在执行语句前边的规定。 课后答案网www.khdaw.com¢ò引进了引用概念。增加了函数调用的方式,除可使用传位调用外,还可用引用调用。¢ò允许函数参数设置默认值。¢ò引进内联函数和重载函数。¢ò运算符可以重载。 课后答案网www.khdaw.com¢三、C++程序在结构上的特点 课后答案网www.khdaw.com¢ò见书中P6,例1.1¢ò见书中P7,例1.2 课后答案网www.khdaw.com¢òC++语言在结构上的特点¢基本上与C语言相同,其区别在于:C++语言程序是若干个函数和若干个类的集合。¢C++语言中函数分两种:一种是说明在类体内的成员函数,另一种是说明和定义在类体外的一般函数。 课后答案网www.khdaw.com¢四、C++程序的实现 课后答案网www.khdaw.com1.C++程序实现的三部曲¢ò编辑¢ò编译连接¢ò运行 课后答案网www.khdaw.com2.使用VC++6.0实现C++程序¢òVC++6.0集成开发工具简介¢ò单文件程序的实现方法¢结合P16,例1.3。¢ò多文件程序的实现方法¢结合P18,例1.4。¢作业题:P20练习题1¢1.1,1.2,1.4¢上机练习题:P241.2中1~5题¢ 课后答案网www.khdaw.com第2章变量和表达式 课后答案网www.khdaw.com¢一.C++语言的字符集和单词¢二.数据类型和存储类¢三.常量¢四.变量¢五.运算符¢六.表达式¢七.类型转换 课后答案网www.khdaw.com一、C++语言的字符集和单词 课后答案网www.khdaw.com1.字符集¢见P25 课后答案网www.khdaw.com2.单词¢与C语言相同。¢ò标识符:字母、数字和下划线的集合。¢ò关键字:见P26。¢ò运算符;C语言4千个,新增5个。¢ò分隔符:空格、分号、冒号、逗号。 课后答案网www.khdaw.com¢ò常量:数字常量、字符常量、字符串常量和枚举常量。¢ò注释符:除/*…*/外,增加行注释符//。 课后答案网www.khdaw.com二、数据类型和存储类 课后答案网www.khdaw.com1.数据类型¢ò基本数据类型:整型、浮点型和字符型及希尔型。¢长的和短的,有符号和无符号。¢详见P28,表2.1。¢ò构选数据类型:数组、结构、联合和类。 课后答案网www.khdaw.com2.存储类¢ò变量存储类的种类:自动类、寄存器类、外部类和静态类。¢ò存储类的特征¢寿命和作用域的不同。¢ò不同存储类的定义或说明方法 课后答案网www.khdaw.com¢三、常量 课后答案网www.khdaw.com1.常量的种类¢ò整型常量¢ò浮点型常量¢ò字符型常量¢ò字符串常量¢ò枚举型常量 课后答案网www.khdaw.com2.符号常量¢ò使用符号常量的好处¢ò定义符号常量的方法¢const〈类型说明符〉〈常量名〉=〈初值〉;¢见P34,例2.1和例2.2 课后答案网www.khdaw.com四、变量 课后答案网www.khdaw.com1.变量的三要素¢ò变量的名字:同标识符¢ò变量的类型:存储类+数据类型¢存储类中,自动类可省略,外部类定义时不加存储类说明符;数据类型不可省略。¢ò变量的值:有效值、无效值(无意义值),默认值和改变值。 课后答案网www.khdaw.com2.变量的定义格式¢〈类型〉〈变量名〉[=〈初值〉,…¢见P37,例2.3和例2.4 课后答案网www.khdaw.com3.变量的作用域¢ò作用域的种类:程序级、文件级、类级、函数级和块级¢ò变量作用域规则¢一个变量在它的作用域内是可见的,而在其作用域外定不可见的。¢ò相关作用域中同名变量可见性的规定见P40,例2.5 课后答案网www.khdaw.com¢五、运算符 课后答案网www.khdaw.com1.运算符的种类和功能复日C语言运算符)¢ò算术运算符¢单日:-,++,--¢双日:+,-,*,/,% 课后答案网www.khdaw.com¢ò关系运算符¢双日:>,<,>=,<=,==,!=¢ò逻辑运算符¢单日:!¢双日:&&,||¢ò位操作运算符 课后答案网www.khdaw.com(1)逻辑位运算符¢单日:~¢双日:&^,| 课后答案网www.khdaw.com(2)移位运算符¢双日:〉〉,〈〈¢ò赋值运算符¢双日:=,+=,-=,*=,/=,%=,&=,=,^=,〉〉=,〈〈= 课后答案网www.khdaw.com¢ò其他运算符¢(1)三日运算符:?:¢(2)逗号运算符:,¢(3)字节数运算符:sizeof¢(4)强制类型运算符:(<类型说明符>)<表达式>或<类型说明符>(<表达式)> 课后答案网www.khdaw.com¢(5)取地址运算符:&(单日)¢(6)取内容运算符:*(单日)¢(7)成员运算符:·和-〉¢(8)下标运算符:[]¢(9)括号运算符:() 课后答案网www.khdaw.com¢òC++语言新增运算符:∷,·*,-〉*,new,delefe 课后答案网www.khdaw.com2.运算符的优先级和结合性¢ò优先级共有15级¢ò结合性有两类,从右至左的有单日、三日和赋值,其余为从左至右的。 课后答案网www.khdaw.com六、表达式 课后答案网www.khdaw.com1.表达式的值和类型¢ò表达式值的计算方法¢ò表达式类型的确定 课后答案网www.khdaw.com2.表达式求值举例¢ò算术表达式¢见P46,例2.6,P47,例2.7¢ò关系表达式¢见P48,例2.8¢ò逻辑表达式¢见P49,例2.9 课后答案网www.khdaw.com¢ò条件表达式¢见P50,例2.10¢ò赋值表达式¢见P51,例2.11¢ò逗号表达式¢见P51,例2.11 课后答案网www.khdaw.com七、类型转换 课后答案网www.khdaw.com1.自动转换¢由高类型转换为低类型 课后答案网www.khdaw.com2.强制转换¢ò显式强制转换¢ò隐含强制转换¢作业题:P52练习题2¢2.1,2.2,2.3,2.4,2.5(自选)¢上机练习题:P58上机指导2¢2.2中1至6 课后答案网www.khdaw.com第3章语句和预处理(复日C语言内容) 课后答案网www.khdaw.com¢一.表达式语句和复合语句¢二.选择语句¢三.循环语句¢四.转向语句¢五.类型定义语句¢六.预处理功能 课后答案网www.khdaw.com¢一、表达式语句和复合语句 课后答案网www.khdaw.com1.表达式语句¢ò表达式和表达式语句¢ò空语句 课后答案网www.khdaw.com2.复合语句¢ò复合语句¢ò分程序 课后答案网www.khdaw.com¢二、选择语句 课后答案网www.khdaw.com1.条件语句¢ò格式¢if(<条件1><语句1>¢elseif(<条件2><语句2>¢elseif(<条件3>)<语句3>¢…¢elseif(<条件n>)<语句n>¢else<语句n+1> 课后答案网www.khdaw.com¢ò功能¢见P62,例3.1,P63,例3.2 课后答案网www.khdaw.com2.开关语句¢ò格式:¢switch(<整形表达式>)¢{¢case(<整常型表达式1>):¢<语句序列1>¢case(<整常型表达式2>):¢<语句序列2> 课后答案网www.khdaw.com¢…¢case(<整常型表达式n>):<语句序列n>¢default:<语句序列n+1>} 课后答案网www.khdaw.com¢ò功能¢brean语句的使用¢见P65,例3.3,P66,例3.4 课后答案网www.khdaw.com三、循环语句 课后答案网www.khdaw.com1.while循环语句¢ò格式¢while(<条件>)<语句> 课后答案网www.khdaw.com¢ò功能¢见P67,例3.5,例3.6 课后答案网www.khdaw.com2.do-while循环语句¢ò格式¢do<语句>¢while(<条件>), 课后答案网www.khdaw.com¢ò功能¢见P69,例3.7,例3.8 课后答案网www.khdaw.com3.for循环语句¢ò格式¢for(d1;d2;d3)<语句> 课后答案网www.khdaw.com¢ò功能¢①计算d1¢②计算d2¢③语句¢④计算d3¢退出循环¢见P70,例3.9,P72,例3.10 课后答案网www.khdaw.com4.多重循环¢见P73,例3.11,P74,例3.12,P75,例3.13 课后答案网www.khdaw.com四、转向语句 课后答案网www.khdaw.com1.goto语句¢ò格式¢goto<语句顿号>; 课后答案网www.khdaw.com¢ò功能¢见P76,例3.14 课后答案网www.khdaw.com2.break语句¢ò格式¢break, 课后答案网www.khdaw.com¢ò功能¢见P77,例3.15 课后答案网www.khdaw.com3.continue语句¢ò格式¢continue, 课后答案网www.khdaw.com¢ò功能¢见P77,例3.17 课后答案网www.khdaw.com4.return语句¢ò格式¢return;或者return<表达式>¢ò功能 课后答案网www.khdaw.com¢五、类型定义语句 课后答案网www.khdaw.com1.格式¢typedef<已有表型名><新类型名表>;¢2.使用时注意事项 课后答案网www.khdaw.com六、预处理功能 课后答案网www.khdaw.com1.文件包含命令¢ò格式¢#inclucle《文件名》或者¢#incluele“<文件名>”¢ò使用时注意事项 课后答案网www.khdaw.com2.宏定义命令¢ò格式¢不带参数时,#define<标识符><串>¢带参数时,#define<宏名>(<参数表>)<宏体>¢ò功能¢见P82,例3.19 课后答案网www.khdaw.com3.条件编译命令¢ò格式¢格式一:#ifdef<标识符>¢<程序段1>¢#else¢<程序段2>¢#endif 课后答案网www.khdaw.com¢格式二:#ifndef(标识符)¢<程序段1>¢#else¢<程序段2>¢#endif 课后答案网www.khdaw.com¢格式三:#if(<表达式>)¢<程序段1>¢#else¢<程序2>¢#endif 课后答案网www.khdaw.com¢ò功能¢见P83,例3.20¢作业题:P84练习题3¢3.1,3.2,3.3,3.4,3.5(自选)¢上机练习题:P89,上机指导3¢3.21~10题 课后答案网www.khdaw.com第4章数组 课后答案网www.khdaw.com¢一.数组定义格式和元素表示¢二.数组的赋值¢三.字符数组和字符串 课后答案网www.khdaw.com一、数组定义格式和元素表示 课后答案网www.khdaw.com1.数组的定义格式¢ò一堆数组¢<类型><数组名>[<大小>]¢ò二堆数组¢<类型><数组名>[<大小1>][<大小2>]¢ò三堆数组¢<类型><数组名>[<大小1>][<大小2>][<大小3>] 课后答案网www.khdaw.com2.数组元素的表示¢ò下标从0开始¢ò在内存中顺序存放 课后答案网www.khdaw.com二、数组的赋值 课后答案网www.khdaw.com1.数组初始化¢ò数组初始化使用初始值表¢数组初始化是判越界的,要求初始化表中数据项个数小于等于元素个数,例如,inta[3][4]={{1,2,3,4},{5,6},{7}};¢分析数组a各元素获得初值的情况。 课后答案网www.khdaw.com¢ò数组赋值¢数组赋值是指给数组的各个元素赋值,使用赋值表达式语句。¢见P96,例4.1,例4.2,P67,例4.3 课后答案网www.khdaw.com¢三、字符数组和字符串 课后答案网www.khdaw.com1.字符数组¢ò字符数组的定义格式¢ò字符数组的初始化¢见P99,例4.4,例4.5¢ò字符数组的赋值¢见P100,例4.6 课后答案网www.khdaw.com2.字符串的输入和输出¢ò字符串的输入,使用提取符>>¢见P101,例4.7¢ò字符串的输出,使用插入符<<¢见P101,例4.8,P102,例4.9和例4.10 课后答案网www.khdaw.com¢四、数组的应用 课后答案网www.khdaw.com1.一堆数组的应用¢ò查找操作¢见P103,例4.11和P104,例4.12¢ò排序操作¢见P145,例4.13,P106,例4.14 课后答案网www.khdaw.com2.二堆数组的应用¢见P107,例4.15和例4.16¢作业题:P108练习题4¢4.1,4.2,4.3,4.4,4.5(自选)¢上机练习题:P113,上机指导4¢4.2中1~10题 课后答案网www.khdaw.com第5章指针和引用 课后答案网www.khdaw.com¢一.指针的概念¢二.指针和数组¢三.引用 课后答案网www.khdaw.com¢一、指针的概念 课后答案网www.khdaw.com1.什么是指针¢ò指针是一种特殊变量,表现在值和类型不同于一般变量¢ò指针指向的变量如何确定 课后答案网www.khdaw.com2.定义指针的格式¢<类型>*<指针名>[=<初值>]¢其中,*是修饰符,说明其后的标识符为指针名。¢见P116,例5.1 课后答案网www.khdaw.com3.指针的赋值¢ò指针的初始化¢ò指针的赋值¢都要使用地址值,并且应做到类型相同和级别一致。 课后答案网www.khdaw.com4.指针的运算¢ò赋值运算¢ò加减整数运算¢ò在一定条件下,两个指针相减¢●在一定条件下,两个指针比较¢见P118,例5.2,P119,例5.3,例5.4¢ò指针运算与地址运算¢见P120,例5.5 课后答案网www.khdaw.com二、指针和数组 课后答案网www.khdaw.com1.指针可以表示数组元素¢ò一堆数组元素的指针表示¢inta[5]¢*(a+i)i=0,…4。 课后答案网www.khdaw.com二堆数组元素的指针表示¢intb[3][4];¢*(*(b+i)+j)¢*(b[i]+j)¢(*(b+i))[j]¢*(&b[0][0]+4*i+j) 课后答案网www.khdaw.com三堆数组元素的指针表示¢intc[2][3][4];¢*(*(*(c+i)+j+k)¢(*(*(c+i)+j))[k]¢*((*(c+i))[j]+k)¢*(*(c[i]+j)+k) 课后答案网www.khdaw.com¢(*(c+i))[j][k]¢(*(c[i]+j))+k)¢*(c[i][j]+k)¢*(&c[0][c][0]+3*4*i+4*j+k)¢见P121,例6.6,P122,例5.7 课后答案网www.khdaw.com2.字符指针和字符串处理函数¢ò字符指针是一种指向字符串的指针,它与字符数组不同,可以用一个字符串常量给字符指针赋值。¢见P124,例5.8 课后答案网www.khdaw.comò字符串处理函数¢包含在string·h文件中¢(1)strlen()¢(2)strcmp()¢(3)index()¢(4)strcat()¢(5)strcpy()¢见P126,例5.9 课后答案网www.khdaw.com3.指向数组的指针和指针数组。¢ò指向数组元素的指针,都是一级指针¢ò指向一堆数组的指针,它是二级指针¢见P128,例5.10和例5.11¢ò指计数组。一堆一级指针数组是一个二堆数组。¢见P129,例5.12 课后答案网www.khdaw.com三、引用 课后答案网www.khdaw.com1.引用的概念¢ò什么是引用¢引用是变量或对象的别名,引用不是变量,它不是内存单元。引用的值和地址值是被引用的变量或对象的值和地址值。 课后答案网www.khdaw.comò创建引用的方法¢<类型>&<引用名>=<初值>¢其中,&是修饰符,表示&后边的标识符是引用名,创建引用时必须对引用初始化,即将该引用绑走在某个变量或对象上。 课后答案网www.khdaw.comò引用的特性¢见P131,例5.13。 课后答案网www.khdaw.com2.引用和指针¢ò指针是变量,引用不是变量¢ò指针可以引用,引用不可以引用¢ò指针可以作数组元素,引用不可以作数组元素¢●可以有空指针,不可以有空引用 课后答案网www.khdaw.com¢见P132,例5.14¢作业题P133,练习题5¢5.1,5.2,5.3,5.4,5.5(自选)¢上机练习题P138上机指导5¢5.2中1~5题 课后答案网www.khdaw.com第6章函数 课后答案网www.khdaw.com¢一.函数的概念¢二.函数的调用¢三.函数的嵌套调用和递归调用¢四.重载函数和内联函数¢五.函数的存储类 课后答案网www.khdaw.com¢一、函数的概念 课后答案网www.khdaw.com1.函数的定义格式¢<变型><函数名>(<参数表>)¢{¢<函数体>¢} 课后答案网www.khdaw.com¢其中,<类型>包含数据类型和存储类,数据类型不得省略,外部函数存储类说明符extern可省略。<函数名>同标识符。<参数表>中可省一个参数或多个参数,多个参数逗号分隔。也可没有参数。 课后答案网www.khdaw.com¢<函数体>是由若干条语句组成的,可以没有语句,称<空函数>,即无功能的函数,在函数体内的若干条语句中,取消了C语言中,说明语句在执行语句文先的规定,给编程带来方便。 课后答案网www.khdaw.com2.函数的说明方法¢函数说明在该函数调用之前,对于先调用后定义的函数,在调用之前必须说明。说明函数时,使用原型说明,其要求如下:¢要求给出函数名,函数类型以及参数的类型和个数。 课后答案网www.khdaw.com3.函数参数¢(1)调用函数的参数称为实参。¢被调用函数的参数称为形参。¢(2)要求实参和形参的个数相等、类型相同。¢(3)函数形参是在该函数被调用时用实参对它进行初始化时被分配内存空间的。 课后答案网www.khdaw.com(4)C++语言中,函数的形参是可以设置默认参数的,规则如下:¢ò设置函数参取的默认值时,要求从右向左。不允许在设置了默认值的参数右边出现不设置默认值的参数。¢ò函数形参可以全部或部分设置默认值。 课后答案网www.khdaw.com¢ò在函数有说明语句的情况下,参数默认值应设置在说明语句中,而不是定义的语句中。在没有函数说明语句时。可定义在定义语句中。¢ò在函数调用时,如果实参有确定值时,对应形参的默认值无效,否则使用形参的默认值。¢ò给形参设置默认值可用同类型的常数,也可用表达式。 课后答案网www.khdaw.com4.函数的返回值¢函数返回值使用refurn语句,其格式如下:¢refurn<表达式>; 课后答案网www.khdaw.com¢执行机制如下:¢ò计算<表达式>值¢ò将<表达式>的类型转换为函数类型¢ò将<表达式>的值作可调用函数的值,传递给某变量或表达式¢ò返回程序控制权 课后答案网www.khdaw.com¢二、函数的调用 课后答案网www.khdaw.com1.传值调用方式¢传值调用又分传表达式值和传变量地址值两种。;它们的实现方法,机制和特点上不同。 课后答案网www.khdaw.comò传值调用方式:¢实参用表达式值,形参用变量名。调用时,将实参拷贝一个副本给形参。这种调用的特点是被调用函数中改变形参值不影响调用函数实参值。 课后答案网www.khdaw.comò传址调用方式:¢实参用地址值,形参是指针。调用时,实参不拷贝副本给形参,而是传递地址给形参,让形参指针指向实参。这种调用的特点是被调用函数中可以通过改变形参所指向的变量值来影响调用函数的实参值。¢见P147,例6.5;P149,例6.7,例6.8 课后答案网www.khdaw.com2.引用调用¢引用调用时,实参用变量名,形参是引用名,形参为实参的别名,实际上传递的是地址值。这种调用的特点同于传址调用,但是比传址调用方便简捷,免去了指针可能带来的麻烦。因此,在C++语言中人们习惯于使用引用调用,较少使用传址调用。¢见P148,例6.6,P150,例6.9,例6.10,例6.11。 课后答案网www.khdaw.com三、函数的嵌套调用和递归调用 课后答案网www.khdaw.com1.函数的嵌套调用¢所谓函数的嵌套调用是指当一个函数调用另外一个函数时,被调用函数还可以再调用其他函数。¢见P153,例6.12,例6.13。 课后答案网www.khdaw.com2.函数的递归调用¢递归调用是指在调用一个函数的过程中出现直接或间接地调用该函数自身。¢ò递归调用的特点¢ò递归调用的过程¢ò实现递归调用的方法¢见P156,例6.14,例6.15 课后答案网www.khdaw.com四、重载函数和内联函数 课后答案网www.khdaw.com¢这是C++语言中增添的内容。¢1.重载函数¢ò重载函数的概念¢相同函数名的多个函数,它们在函数参数的类型、个数和顺序上有所不同,它们还具有不同的实现(即函数体)。 课后答案网www.khdaw.com¢ò重载函数的选择规则¢相同名字的若干个函数选择规则是根据调用函数的实参的类型、个数和顺序不同进行匹配选择。¢见P159,例6.16,例6.17 课后答案网www.khdaw.com2.内联函数¢ò内联函数的概念¢内联函数被调用时不是转去执行该函数的函数体,而是在编译时用该函数体进行替换。以增加程序代码为代价换取较高的运行效率。¢ò内联函数的说明方法¢在函数头前加关键字inline。¢见P161,例6.18。 课后答案网www.khdaw.com¢五、函数的存储类 课后答案网www.khdaw.com1.外部函数¢见P162,例6.19 课后答案网www.khdaw.com2.内部函数¢见P164,例6.20¢作业题P165练习题6¢6.1,6.2,6.3,6.4,6.5(自选)¢上机练习题:P170上机指导6¢6.2中1~10题。¢ 课后答案网www.khdaw.com第7章结构和联合 课后答案网www.khdaw.com¢一.结构的概念¢二.结构与数组¢三.结构与函数¢四.联合的概念 课后答案网www.khdaw.com一、结构的概念 课后答案网www.khdaw.com1.结构类型和结构变量的定义格式¢ò结构类型定义格式¢sturct<结构名>¢{¢<结构成员说明>¢}; 课后答案网www.khdaw.com¢ò结构变量定义格式¢struct<结构名><结构变量名表>;¢ò结构类型和结构变量同时定义格式¢struct<结构名>¢{¢<结构成员说明>¢}<结构变量名表>; 课后答案网www.khdaw.com2.结构成员的表示和结构变量的赋值¢ò结构成员的表示¢一般结构变量的成员表示:<结构变量名>、<成员名>¢指向结构变量的指针成员表示:¢<结构指针名>-><成员名> 课后答案网www.khdaw.com¢ò结构变量初始化¢strucf<结构名><结构变量名>=<初始值表>,¢ò结构变量赋值¢结构变量赋值是给该结构变量的各个成员赋值。 课后答案网www.khdaw.com3.结构变量运算¢结构变量运算包括该结构变量的各个成员的运算。¢见P175,例7.1,例7.2 课后答案网www.khdaw.com¢二、结构与数组 课后答案网www.khdaw.com¢1.数组可作结构成员¢2.结构变量可作数组元素¢见P178,例7.3,例7.4 课后答案网www.khdaw.com三、结构与函数 课后答案网www.khdaw.com1.结构变量作函数参数和返回值¢见P181,例7.5 课后答案网www.khdaw.com2.指向结构变量的指针作函数参数和返回值¢见P182,例7.6,例7.7 课后答案网www.khdaw.com3.结构变量的引用作函数参数¢见P185,例7.8 课后答案网www.khdaw.com¢四、联合的概念 课后答案网www.khdaw.com1.联合类型和联合变量的定义格式¢ò联合类型的定义格式¢union<联合名>¢{¢<联合成员说明>¢}; 课后答案网www.khdaw.com¢ò联合变量的定义格式¢union<联合名><联合变量名表>;¢ò联合变量也可以与联合类型同时定义。 课后答案网www.khdaw.com2.联合与结构的区别¢它们的最大区别是结构的成员是异址的,联合的成员是同址的。¢见P189,例7.9,例7.10¢作业题:P191练习题7¢7.1,7.2,7.3,7.4,7.5(自选)¢上机练习题:P195上机指导7¢7.2中1~5题 课后答案网www.khdaw.com第8章类和对象(一) 课后答案网www.khdaw.com¢一.类的定义格式与对象的定义方法¢二.对象的初始化¢三.数据成员的类型和成员函数的特性¢四.静态成员¢五.常成员¢六.友元¢七.类型转换 课后答案网www.khdaw.com一、类的定义格式和对象的定义方法 课后答案网www.khdaw.com1.类的定义格式¢一个封装体,二种成员(成员函数和数据成员)。¢三种访问权限(公有、私有和保护) 课后答案网www.khdaw.com具体格式如下:¢//说明部分¢class<类名>¢{¢public:¢<成员说明>¢profecfed:¢<成员说明>¢private: 课后答案网www.khdaw.com¢<成员说明>¢};¢//实现部分¢成员函数的具体定义:¢<函数类型><表名>::<函数名>(<参数表)>¢{¢<函数体>¢}¢见P197例子。 课后答案网www.khdaw.com2.对象的定义方法¢ò先定义表,再定义对象¢<类名><对象名类>;¢ò定义表的同时定义对象¢class<类名>¢{¢<类体>¢}<对象名类>。 课后答案网www.khdaw.com3.对象成员的表示¢ò一般对象和对象引用成员的表示使用运算符。¢ò指向对象的指针的成国表示使用运算符->。¢见P201,例8.1。 课后答案网www.khdaw.com¢二、对象的初始化 课后答案网www.khdaw.com1.构造函数¢(1)功能¢用来给对象初始化 课后答案网www.khdaw.com¢(2)种类¢ò默认构造函数(用于定义或系统提供)¢ò带参数构造函数¢●拷贝构造函数 课后答案网www.khdaw.com¢(3)特点¢与一般成员函数不同之处有3点¢ò函数名同类名¢ò定义时不给函数类型¢ò系统自动调用 课后答案网www.khdaw.com2.析构函数¢(1)功能¢用来释放对象的。¢(2)特点¢(同构造函数,函数名参加符号~)¢见P204例8.2,P206,例8.3,P207,例8.4 课后答案网www.khdaw.com三、数据成员的类型和成员函数的特性 课后答案网www.khdaw.com1.数据成员的类型¢ò可以是C++语言中允许的任何类型,但不能为自身类的对象。 课后答案网www.khdaw.com2.成员函数的特性¢ò可以重载¢见P209,例8.5¢ò可以为内联函数¢见P211,例8.6¢ò可以设置函数参数默认值¢见P212,例8.7 课后答案网www.khdaw.com¢四、静态成员 课后答案网www.khdaw.com1.静态成员的特点及说明方法¢ò静态成员分为静态数据成员和静态成员函数¢ò静态成员说明时使用关键字stafic¢ò静态成员是属于类的,而不是属于某个对象的 课后答案网www.khdaw.com2.静态数据成员¢ò静态数据成员是类的所有对象的共享的。¢ò静态数据成员的初始化放在类体外进行。¢ò静态数据成员可以用对象引用,也可用类名引用。¢见P214,例8.8 课后答案网www.khdaw.com3.静态成员函数¢ò静态成员函数可以用对象引用,也可以用类名引用,它是一种在没有定义对象时便可调用的成员函数¢ò静态成员函数中可以直接引和静态成员,但是引用非静态成员要使用对象名。¢见P215,例8.9 课后答案网www.khdaw.com五、常成员 课后答案网www.khdaw.com¢常成员包含常数据成员和常成员函数。¢1.常数据成员¢ò说明方法使用前加const关键字。¢ò常数据成员初始化必须放在构造函数的成员初始化列表中。 课后答案网www.khdaw.com¢成员初始化列表是放在构造函数头的后边用冒号进行分隔,其格式如下:¢<构造函数名>(<参数表>):<成员初始化列表>¢{<函数体>}¢见P217,例8.10 课后答案网www.khdaw.com2.常成员函数¢ò说明方法是在函数头后加const关键字。¢ò常成员函数是用来给常对象引用的。¢常对象只能引用常成员函数,而非常对象又以引用非常成员函数,也可以引用常成员函数。¢见P218,例8.11 课后答案网www.khdaw.com六、友元 课后答案网www.khdaw.com1.友元函数¢ò友元函数是一种说明在类体内的非成员函数。¢ò说明友元函数的方法是前加关键字friend。 课后答案网www.khdaw.com¢ò友元函数的用途是可以访问所在类中的和有成员和其他成员。¢ò友元函数破坏类的封装性使用时要慎重。¢ò友元函数定义在类体外时,不加类各限定,与一般函数的定义方法相同。友元函数引用时也与一般函数相同。¢见P220,例8.12,P221,例8.13 课后答案网www.khdaw.com2.友元类¢ò使用关键字friend可在一类体中说明另一个类是该类的友元类。¢ò友元类中的所有成员函数都是友元函数。¢ò使用友元表可以使一个类的成员函数访问另一个类的私有成员及其他成员。¢见P222,例8.14 课后答案网www.khdaw.com¢七、类型转换 课后答案网www.khdaw.com1.将某种基本数据类型转换为类类型¢ò使用单参数的构造函数¢见P224,例8.15 课后答案网www.khdaw.com2.将某种类类型转换为某种基本数据类型¢ò使用类型转换函数。¢ò类型转换函数是一种特殊的非静态成员函数,其格式如下: 课后答案网www.khdaw.com¢operator<数据类型说明符>()¢{<函数体>}¢该函数不加类型说明,不带参数,使用关键字operator,函数名为类型名,<函数体>中给出转换方法。¢见P225,例8.16¢作业题P226练习题8¢8.1,8.2,8.3,8.4,8.5(自选)¢上机练习题P234上机指导8¢8.2中1~10题 课后答案网www.khdaw.com第9章类和对象(二) 课后答案网www.khdaw.com¢一.对象指针和对象引用¢二.对象数组和对象指针数组¢三.子对象和堆对象¢四.类的作用域和对象的生存期 课后答案网www.khdaw.com¢一、对象指针和对象引用 课后答案网www.khdaw.com1.对象指针¢ò对象指针的定义格式¢<类名>*<对象指针名>=<初值> 课后答案网www.khdaw.com¢ò对象指针可以被初始化,也可以被赋值。可以使用一个同表对象的地址值进行赋值,也可以使用运算符new的表达式进行赋值。(后边讲)¢见P237,例9.1,P238,例9.2,P239,例9.3 课后答案网www.khdaw.com2.this指针¢òthis指针是系统自动创建的指向对象的指针.¢ò当使用对象调用成员函数时,系统便自动创建一个指向该对象的指针this.¢òthis指针通常被隐含使用,有时也被显式使用.¢见P241,例9.4 课后答案网www.khdaw.com3.指向类的成员的指针¢(1)指向类的数据成员的指针¢ò该指针指向类的某个数据成员,定义时应加上类名限定。具体格式如下:¢<类型><类名>::*<指针名> 课后答案网www.khdaw.com¢ò该指针可以使用该类中某个数据成员的地址进行初始化或赋值,使用时应加类名限定。即在数据成员地址值前加<类名>::。 课后答案网www.khdaw.com¢ò使用对象通过指向类的数据成员的指针引用该成员时用运算符·*;使用对象指针通过指向类的数据成员的指针引用该成员时用运算符->*。 课后答案网www.khdaw.com(2)指向类的成员函数的指针¢ò该指针指向类的某个成员函数,定义时应加上类名限定。具体格式如下:¢<类型><类名>::*<指针名>(<参数类>); 课后答案网www.khdaw.com¢ò该指针使用该类中某个成员函数名进行初始化或赋值,使用时应加类名限定。 课后答案网www.khdaw.com¢ò使用对象通过指向类的成员函数的指针引用该成员时用运算符。*;使用对象指针通过指向类的成员函数的指针引用该成员时用运算符->*。¢见P243,例9.5 课后答案网www.khdaw.com(4)对象引用¢ò对象引用的创建格式如下:¢<类名>&<对象引用名>=<对象名>;¢ò引象引用是某个已知对象的别名¢ò引象引用通常用来作函数参数或返回值。¢见P245,例9.6 课后答案网www.khdaw.com二、对象数组和对象指针数组 课后答案网www.khdaw.com1.对象数组¢ò对象数组的定义格式、赋值方法及使用。¢见P247,例9.7。 课后答案网www.khdaw.com2.对象指针数组¢ò对象指针数组的定义格式、赋值方法及其使用。¢见P248,例9.8 课后答案网www.khdaw.com3.指向对象数组的指针¢ò指向一堆对象数组的指针的定义格式、赋值和使用。¢见P249,例9.9。 课后答案网www.khdaw.com三、子对象和堆对象 课后答案网www.khdaw.com1.子对象¢ò一个类的数据成员可以是另外类的对象,该对象称为子对象。¢ò子对象反映了两个类之间的包含关系,又称组合关系。¢ò类中的子对象的初始化应放在该类构造函数的成员初始化表中。¢见P251,例9.10。 课后答案网www.khdaw.com2.堆对象¢(1)堆对象的特点¢ò堆对象是一种被存放在内存堆注的对象,又称动态对象。它可以运行中创建并可以随时释放。¢ò使用运算符new创建堆对象,并使用运算符delefe释放它。 课后答案网www.khdaw.com(2)运算符new的使用。¢ò使用new可以创建一个对象,并可以进行初始化,具体格式如下:¢假定,P是表A的对象指针。¢A*P;¢p=newA(初值);¢new运算符组成的表达式是一个地址值用来向内存申请内存单元,如果成功,其值为非0地址值,否则值为0。 课后答案网www.khdaw.com¢ò使用new也可以创建一个对象数组,但不能进行初始化,具体格式如下:¢A*P;¢p=newA[5];¢这里,P是一个指向A类对象数组的指针,该数组为5个元素,每个元素是A类的一个对象。该对象数组的5个元素可用指针表示为P[0],P[1],P[2],P[3]和P[4]。 课后答案网www.khdaw.com¢ò在使用new运算符创建对象时,系统会自动调用相应的构造函数。在创建对象数组时,系统自动调用默认的构造函数,然后,再给对象数组的各元素赋值。 课后答案网www.khdaw.com(3)运算符defete的使用¢ò使用delefe可以释放一个堆对象,其格式如下:¢defete<指针名>;¢在用delefe释放堆对象时,系统自动调用析构函数。 课后答案网www.khdaw.com¢ò使用delefe也可以释放一个堆对象数组,其格式如下:¢delefe[]<指针名>;¢这时,系统会自动调用多次析构函数。¢见P254,例9.11,P255,例912 课后答案网www.khdaw.com¢四、类的作用域和对象的生存期 课后答案网www.khdaw.com1.类的作用域¢ò类域的范围是指该类的表体内。 课后答案网www.khdaw.com2.对象的生存期¢ò局部对象¢ò全局对象¢ò静态对象¢见P259,例9.13 课后答案网www.khdaw.com3.局部类的嵌套类¢ò局部类是指定义在函数体内的类。¢见P260,例9.14 课后答案网www.khdaw.com¢ò嵌套类指的是在一个类中定义的类。¢见P262,例9.15¢作业题P267练习题9¢9.1,9.2,9.3,9.4,9.5(自选)¢上机练习题:P275,上机指导9¢9.2中1~10题。 课后答案网www.khdaw.com第10章继承性和派生类 课后答案网www.khdaw.com¢一.继承的概念¢二.基类成员在派生类的访问权限¢三.单重继承派生类的构造函数和析构函数¢四.子类型和赋值兼容规则¢五.多重继承¢六.多重继承的二义性¢七.虚基类 课后答案网www.khdaw.com¢一、继承的概念 课后答案网www.khdaw.com1.基类和派生类¢ò派生类中包含基类中的所有成员。 课后答案网www.khdaw.com2.单重继承和多重继承¢ò单重继承是指只有一个基类的继承¢ò多重继承是指有两个或两个以上基类的继承 课后答案网www.khdaw.com3.派生类的定义格式¢class<派生类名>:<继承方式><基类名>,…¢{¢<派生类增加的成员说明>¢}; 课后答案网www.khdaw.com4.继承方式¢ò公有继承方式(publc)¢ò私有继承方式(private)¢●保护继承方式(profectod) 课后答案网www.khdaw.com¢二、基类成员在派生类的访问权限 课后答案网www.khdaw.com¢基类成员在堆生类中的访问权限与继承方式有关。具体规则如下:¢ò基类中私有成员在派生类中不可访问(即不可直接访问)。 课后答案网www.khdaw.com¢ò公有继承方式下,基类中公有、保护成员在派生类中仍为公有、保护成员。 课后答案网www.khdaw.com¢ò私有继承方式下,基类中公有、保护成员在堆生类中都为和有成员 课后答案网www.khdaw.com¢ò保护继承方式下,基类中公有、保护成员在派生类中都为保护成员。 课后答案网www.khdaw.com上述规则简述如下:¢ò私有成员不可访问,公有继承不变,和有继承私有,保护继承保护。¢见P283,例10.1~例10.3 课后答案网www.khdaw.com三、单重继承派生类的构造函数和析构函数 课后答案网www.khdaw.com1.派生类的构造函数¢ò派生类的构造函数中包含基类的构造函数。如果包含的基类的构造函数是带参数的应放显式包含在构造函数的成员初始化表中;如果包含的基类的构造函数是默认的,则派生类构造函数中隐含了基表默认的构造函数。 课后答案网www.khdaw.com¢ò派生类构造函数的执行顺序是先执行其基类的构造函数,如有了对象则执行子对象所属类的构造函数,前后执行派生类的构造函数体。 课后答案网www.khdaw.com2.派生类的结构函数¢ò派生类的结构函数中隐含着基类中的结构造函数。¢ò派生类的结构函数的执行顺序与构造函数的执行顺序相反。¢见P288,例10.5,P290,例10.6,P292,例10.7,P293,例10.8。 课后答案网www.khdaw.com三、子类型和赋值兼容规则 课后答案网www.khdaw.com1.子类型¢ò在公有继承方式下,派生类是基类的子类型。派生类的对象就是基类的对象。¢ò子类型是不可无的。 课后答案网www.khdaw.com2.赋值兼容规则¢在类A是类B的子类型时,则:¢ò类A的对象可以赋值给类B的对象¢ò类A的对象可以给类B对象引用初始化¢ò类A的对象地址值可以给类B对象指针赋值。¢见P296,例10.9。 课后答案网www.khdaw.com四、多重继承 课后答案网www.khdaw.com1.多重继承派生类的定义格式¢class<类名>:<继承方式1><基类名>,<继承方式2><基类名2>,…¢{¢<派生类体>¢}; 课后答案网www.khdaw.com2.多重继承派生类的构造函数和析构函数¢(1)派生类的构造函数¢ò派生类的构造函数中包含所有基类的构造函数。与单重继承相同,显式包含时应放在成员初始化列表中。 课后答案网www.khdaw.com¢ò派生类的构造函数的执行顺序与单重继承的相同,多个基类的执行顺序取决时定义派生类时给出的各个基类的顺序,而与构造函数的成员初始化列表中给定的顺序无关。 课后答案网www.khdaw.com(2)派生类的析构函数¢ò派生类的析构函数中隐含包含所有基类的析构函数。¢ò派生类的析构函数执行顺序与构造函数相反。¢见P299,例10.10 课后答案网www.khdaw.com五、多重继承的二义性 课后答案网www.khdaw.com1.调用不同基类中的相同成员时可能出现二义性¢ò避免方法:表名限定。<类名>∷¢见P302,例10.11。 课后答案网www.khdaw.com2.访问共同基类的成员时可能出现二义性¢ò避免方法,类名限定和虚基类。¢见P303,例10.12。 课后答案网www.khdaw.com六、虚基类 课后答案网www.khdaw.com1.虚基类的概念¢ò虚基类的说明方法:在公共基表名前加关键字virtual。¢ò虚基类的作用:(1)避免二义性(2)使公共基类只进行一次初始化。 课后答案网www.khdaw.com2.虚基类情况下派生类的构造函数中包含公共基类的构造函数,并优先执行一次。¢见P307,例10.13。¢作业题P310练习题10¢10.1,10.2,10.3,10.4,10.5(自选)¢上机练习题:P319上机指导10¢10.2中1~12题 课后答案网www.khdaw.com第11章多态性和虚函数 课后答案网www.khdaw.com¢一.运算符重载¢二.静态联编和动态联编¢三.纯虚函数和抽象类 课后答案网www.khdaw.com一、运算符重载 课后答案网www.khdaw.com1.运算符重载的概念¢ò在C++语言中有5种运算符不能重载。¢ò运算符重载遵循“四个不变”原则¢ò重载运算符功能的选择是根据操作数的个数,类型和顺序。 课后答案网www.khdaw.com2.运算符重载的两种方法¢ò成员函数法格式如下:¢<类型>operator<运算符>(<参数类)>¢{<函数体>}¢见P324,例11.1 课后答案网www.khdaw.com¢ò友元函数法格式如下:¢friend<类型>operafor<运算符>(<参数类>)¢{<函数体}¢见P326,例11.2。 课后答案网www.khdaw.com3.运算符重载举例¢ò赋值运算符重载¢见P328,例11.3。¢ò下标运算符重载¢见P330,例11.4。 课后答案网www.khdaw.com¢ò插入符和提取符重载¢见P331,例11.5。¢ò关系运算符重载¢见P332,例11.6。 课后答案网www.khdaw.com二、静态联编和动态联编 课后答案网www.khdaw.com1.联编的概念¢ò联编是对若干个相同名字的函数的选择或绑走问题。¢ò联编从时间上分为静态联编和动态联编两种。¢ò静态联编是在编译时进行的;动态联编是在运行时进行的。 课后答案网www.khdaw.com¢ò通常调用函数是实现静态联编,只有在满足一定条件时才实现动态联编。¢见P335,例11.7;P336,例11.8。 课后答案网www.khdaw.com2.虚函数¢(1)虚函数的概念¢ò虚函数是用关键字virtual说明的一种非静态的成员函数。 课后答案网www.khdaw.com¢ò虚函数具有继承的特点。在基类中定义了虚函数,则在派生类中与基类中虚函数说明完全相同的成员函数一定为虚函数。¢●虚函数是实现动态联编的必要条件。动态联编是引用虚函数的多态性。 课后答案网www.khdaw.com3.实现动态联编的条件¢在公有继承方式下¢ò对象引用和对象指针调用虚函数时,实现动态联编,而对象调用虚函数实现静态联编。¢ò成员函数调用虚函数实现动态联编,构造函数调用虚函数实现静态联编。¢见P339,例11.9,P340,例11.10,P342,例11.11。 课后答案网www.khdaw.com4.虚析构函数¢ò在具有继承层次结构的程序中设置虚析构函数会使得析构更彻底。¢见P343,例11.12。 课后答案网www.khdaw.com三、纯虚函数和抽象类 课后答案网www.khdaw.com1.纯虚函数¢ò纯虚函数是一种不给出具体的虚函数。¢ò纯虚函数具体说明如下:¢virtual<类型><函数名>(<参数表>)=0;¢见P235,例11.13。 课后答案网www.khdaw.com2.抽象表¢ò含有一个或多个纯虚函数的表叫抽象类。¢不含有纯虚函数的类叫具体类。¢ò抽象类不能定义对象,可定义对象引用和对象指针。 课后答案网www.khdaw.com¢ò抽象类通常用作程序的要基类,它的纯虚函数通常在它派生类中实现。抽象类一定要有派生类,它的派生类可以是抽象类也可以是具体类。 课后答案网www.khdaw.com¢见P347,例11.14。¢作业题:P350练习题11¢11.1,11.2,11.3,11.4,11.5(自选)¢上机练习题:P358上机指导11¢11.2中1~9题 课后答案网www.khdaw.com第12章C++语言的输入/输出操作 课后答案网www.khdaw.com¢一.I/O流类库概述¢二.标准文件的输入/输出操作¢三.格式输出操作¢四.磁盘文件操作¢五.字符串流输入/输出操作¢六.流错误处理 课后答案网www.khdaw.com一、I/O流类库概述 课后答案网www.khdaw.com¢1.边用I/O流类库(iosfream·h)¢2.文件I/O流类库(fstream·h)¢3.字符串I/O流类库(strstrea·h) 课后答案网www.khdaw.com二、标准文件的输入/输入操作 课后答案网www.khdaw.com1.输出操作¢ò使用插入符<<¢见P362,例12.1。P363,例12.2。¢ò成员函数put()¢见P364,例12.3。¢ò成员函数wnfe()¢见P265,例12.4。 课后答案网www.khdaw.com2.输入操作¢ò使用提取符>>¢见P366,例12.5,例12.6。¢ò成员函数get()¢见P367,例12.7。 课后答案网www.khdaw.com¢ò成员函数getline()¢见P368,例12.8。¢ò成员函数read()¢见P369,例12.9。 课后答案网www.khdaw.com三、格式输出操作 课后答案网www.khdaw.com1.使用成员函数进行格式输出¢ò标去位见P370,表12.1。¢ò设置标去字的成员函数:flags(),setf(),unsetf()。 课后答案网www.khdaw.com¢ò设置输出格式的成员函数:¢width(),fill(),precision()¢见P371,例12.10.P372,例12.11. 课后答案网www.khdaw.com2.使用操作子进行格式输出¢ò操作子见P373,表12。2.¢ò包含文件iomanip·h¢见P373,例12.12。 课后答案网www.khdaw.com¢四、磁盘文件操作 课后答案网www.khdaw.com1.打开文件和关闭文件¢(1)打开文件有如下方法:¢òfstieam<对象>¢<对象名>·open(“<文件名>”,<访问方式>); 课后答案网www.khdaw.com¢òfstieam<对象名>(“<文件名>”,<访问方式>);¢òifstream<对象名>;<对象名>·open(“<文件名>”); 课后答案网www.khdaw.com¢òifstream<对象名>(“<文件名>”);¢òofstieam<对象名><对象名>·open(“<文件名>”);¢òofstream<对象名>(“<文件名>”);¢ò<访问方式>的选择见P374,表12.3。 课后答案网www.khdaw.com(2)关闭文件¢ò关闭文件的方法如下:¢<对象名>·close(); 课后答案网www.khdaw.com2.文件的输入/输出操作¢ò文本文件的读写操作¢见P376,例12.13,P377,例12.14,P378,例12.15。¢ò二进制文件的读写操作¢见P378,例12.16 课后答案网www.khdaw.com¢ò趁机文件操作¢定位读/写指针的函数:¢seekg()和tellg()—读指针定位函数¢seekp()和tellp()—写指针定位函数¢见P380,例12.17。 课后答案网www.khdaw.com3.文件操作的其他函数¢ò跳动输入流中若干字符函数ignore()见P382,例12.18。¢ò退回一个字符到输入流函数putback()¢见P383,例12.19。 课后答案网www.khdaw.com五、字符串流输入/输出操作 课后答案网www.khdaw.com1.字符串流输出操作¢ò创建字符串输出流对象,使用ostrstream类中提供的构造函数。¢ò使用文件操作的输出操作方法进行写操作。¢见P384,例12.20。 课后答案网www.khdaw.com2.字符串流的输入操作¢ò创建字符串输入流对象,使用istrstream表中提供的构造函数。¢ò使用文件操作的输入操作方法进行读操作。¢见P386,例12.21。 课后答案网www.khdaw.com六、流错误处理 课后答案网www.khdaw.com1.错误状态字和状态函数¢ò错误状态字中各个状态位的描述。¢ò检测状态字中各状态的成员函数。 课后答案网www.khdaw.com2.清除/设置错误状态位¢使用成员函数clear()¢见P387,例12.22。¢作业题:见P388,练习题12¢12.1,12.2,12.3,12.4,12.5(自选)¢上机练习题:见P394,上机指导12¢12.2中1~10题。 课后答案网www.khdaw.com第13章C++语言工具 课后答案网www.khdaw.com¢一.模板¢二.异常处理 课后答案网www.khdaw.com一、模板 课后答案网www.khdaw.com1.模板的概念¢ò什么是模板:一种支持参数化多态性的工具。¢ò模板通常分为两种:函数模板和类模板。¢ò引进模板可以避免重复劳动,提高代码的重用性。 课后答案网www.khdaw.com2.函数模板和模板函数¢ò函数模板的定义格式:¢template《模板参数表》¢<类型><函数>(<参数表>)¢{<函类体>}¢其中,模板参数表通常格式为class<标识符>,… 课后答案网www.khdaw.com¢ò模板函数是函数模板的实例化,使用一个具体类型替换模板参数的一个具体函数。¢见P398,例13.1,P399,例13.2,P400,例13.3。 课后答案网www.khdaw.com3.类模板和模板类¢ò类模板的定义格式¢template《模板参数表》¢class<类名>¢{¢<类体说明>¢};¢其中,<模板参数表>通常格式为class<标识符>,… 课后答案网www.khdaw.com¢ò类模板中的成员函数都是函数模板。¢ò模板类对象的定义方法:¢<类模板名>《具体类型说明符》<对象名>(<初始化参数名>);¢见P403,例13.4,P404,例13.5,P406,例13.6。 课后答案网www.khdaw.com二、异常处理 课后答案网www.khdaw.com1.异常和异常处理¢ò异常是一种可以预测的一种错误。这种错误可以被定义、被发现被处理。¢ò异常处理是检查出异常后并进行处理的过程。C++语言中对异常处理方法采用向上级传递的方法,由上级处理。 课后答案网www.khdaw.com2.异常处理的实现¢异常处理机制通常由如下三步实现:¢ò检查异常(使用try语句块)¢ò抛出异常(使用throw语句块)¢ò捕提异常(使用catch语句块)¢见P409,例13.7。 课后答案网www.khdaw.com¢ò异常处理的语法结构¢由语句throw的语句块try-catch构成。¢(1)throw语句格式如下:¢throw<表达式>; 课后答案网www.khdaw.com(2)try-catch语句块格式如下:¢try¢{¢<被进行异常检查和若干语句>¢}¢catch(<异常信息类型>或<变量>)¢{¢<异常处理的若干语句>¢} 课后答案网www.khdaw.com¢见P412,例13.8,P414,例13.9。¢作业题:P416练习题13¢13.1,13.2,13.3,13.4,13.5(自选)¢上机练习题:P423,上机指导13¢13.2中1~6题'

您可能关注的文档