目录CONTENTS 第1章程序设计概述1 1.1计算机系统概述1 1.1.1什么是计算机系统1 1.1.2计算机硬件2 1.1.3计算机软件2 1.2程序设计基本概念3 1.2.1问题求解过程3 1.2.2算法与程序4 1.2.3程序设计语言7 1.3程序设计方法8 1.3.1结构化程序设计8 1.3.2面向对象程序设计9 1.4C与C++10 1.4.1C语言10 1.4.2C++语言11 1.5C++编程简介11 1.5.1C++编程的典型过程11 1.5.2第一个C++程序12 1.6程序设计风格13 习题15 第2章C++语言基础17 2.1C++的字符集和关键字17 2.1.1字符集17 2.1.2标识符18 2.1.3关键字18 2.2基本数据类型19 2.2.1整型19 2.2.2浮点型20 2.2.3字符型21 2.2.4布尔类型21 2.2.5空类型22 2.3常量与变量22 2.3.1常量22 2.3.2变量25 2.3.3符号常量26 2.3.4const修饰符27 2.4初识输入输出27 2.4.1使用库函数27 2.4.2使用cin和cout28 2.5main函数30 习题32 目录C++程序设计(第4版)第3章表达式34 3.1表达式基础34 3.1.1基本概念34 3.1.2优先级和结合律35 3.2运算符和表达式35 3.2.1算术运算35 3.2.2关系运算38 3.2.3逻辑运算38 3.2.4位运算40 3.2.5赋值运算43 3.2.6逗号运算45 3.2.7条件运算符45 3.2.8sizeof运算符46 3.3类型转换46 3.4表达式语句48 习题49 第4章控制结构52 4.1程序的语句和基本控制结构52 4.2顺序结构——复合语句53 4.3选择结构54 4.3.1if选择结构54 4.3.2ifelse选择结构55 4.3.3switch选择结构61 4.4循环结构65 4.4.1while循环语句65 4.4.2dowhile循环语句68 4.4.3for循环语句69 4.4.4循环嵌套72 4.5控制转移语句73 4.5.1break语句73 4.5.2continue语句75 4.5.3goto语句76 4.5.4return语句77 4.6结构化程序设计方法77 4.6.1结构化程序设计思想77 4.6.2结构化程序设计原则80 4.6.3结构化程序设计示例80 4.6.4再谈程序设计风格84 习题86 第5章函数90 5.1模块化程序设计90 5.2预定义函数的使用91 5.3函数定义与函数原型92 5.3.1函数定义92 5.3.2函数原型94 5.4函数的调用95 5.4.1函数调用的概念95 5.4.2参数传递97 5.4.3默认参数99 5.4.4内联函数100 5.5函数重载102 5.6作用域103 5.7存储类别105 5.7.1变量的存储特性106 5.7.2自动存储变量106 5.7.3静态存储变量107 5.7.4寄存器变量110 5.7.5外部变量110 5.8递归函数111 5.8.1递归的概念111 5.8.2递归函数应用举例113 5.9预处理指令116 5.9.1#include指令117 5.9.2#define指令117 5.9.3#if、#else、#endif、#ifdef、#ifndef指令119 习题120 第6章数组123 6.1一维数组124 6.1.1一维数组的声明与初始化124 6.1.2数组的应用125 6.1.3通过范围for循环访问数组128 6.1.4数组作为函数参数129 6.2多维数组134 6.2.1多维数组的定义与初始化134 6.2.2多维数组的应用示例136 6.2.3多维数组作为函数参数138 6.3字符串141 6.3.1字符与字符串的概念141 6.3.2字符串与字符数组141 6.3.3字符串的输入和输出143 6.3.4字符串的应用示例145 6.3.5string类型146 习题148 第7章指针150 7.1指针的概念和定义150 7.2使用指针152 7.2.1指针的运算152 7.2.2指针作为函数参数156 7.3指针与数组157 7.4字符指针与字符数组161 7.4.1字符串函数161 7.4.2字符串函数的应用167 7.5指针与const限定符170 7.5.1基本概念170 7.5.2用const限定指针170 7.6指针和引用174 7.7动态内存分配176 7.7.1基本概念176 7.7.2动态分配内存的应用178 7.8函数指针181 7.8.1函数指针的定义181 7.8.2函数指针的使用182 习题184 第8章自定义数据结构187 8.1结构的基本概念187 8.1.1结构的定义188 8.1.2结构变量成员的引用190 8.2结构的使用191 8.2.1结构与函数191 8.2.2结构与数组195 8.2.3结构与指针198 8.2.4位段201 8.3联合203 8.3.1联合和联合变量定义203 8.3.2联合的使用205 8.4枚举206 8.4.1枚举和枚举型变量的定义207 8.4.2枚举类型变量的赋值和使用208 8.5链表的基本概念208 8.6单向链表209 8.6.1单向链表的定义209 8.6.2单向链表的操作210 8.7双向链表219 8.7.1双向链表的定义219 8.7.2双向链表的操作220 习题226 第9章输入和输出229 9.1C++的输入和输出230 9.2用流进行输入输出230 9.2.1流操纵算子231 9.2.2其他输入输出成员函数236 9.3C语言的输入与输出函数237 9.3.1标准输入与输出函数237 9.3.2格式化输入函数scanf238 9.3.3格式化输出函数printf240 9.3.4格式化输入输出函数应用示例241 9.4文件的基本概念246 9.5通过文件流进行文件操作247 9.5.1通过文件流打开、建立文件248 9.5.2通过文件流写文件250 9.5.3通过文件流读文件251 9.5.4通过文件流读写二进制文件253 9.5.5通过文件流随机读写文件255 9.6通过FILE结构进行文件操作258 9.6.1通过FILE结构建立、打开和关闭文件258 9.6.2通过FILE结构写文件260 9.6.3通过FILE结构读文件262 9.6.4通过FILE结构指针随机读写文件266 习题267 第10章面向对象程序设计基本概念270 10.1面向对象语言和面向对象方法270 10.2类、对象和消息272 10.2.1类和对象272 10.2.2消息274 10.3面向对象程序设计的特点275 10.4面向对象程序的结构277 习题279 第11章类与对象281 11.1数据抽象的概念282 11.2抽象数据类型283 11.2.1封装与信息隐藏283 11.2.2接口与实现的分离284 11.2.3用结构实现用户自定义类型——栈284 11.2.4用类实现抽象数据类型——栈288 11.3类和对象的定义293 11.3.1数据成员293 11.3.2成员函数295 11.3.3访问控制295 11.3.4静态成员297 11.3.5对象的建立301 11.4构造函数和析构函数302 11.4.1构造函数和析构函数的作用303 11.4.2构造函数重载304 11.4.3默认构造函数305 11.4.4复制构造函数307 11.4.5构造函数和析构函数的执行时机308 11.5this指针310 11.6类的const特性313 11.7类的复合317 11.8友元函数和友元类324 11.8.1友元函数325 11.8.2友元类326 习题328 第12章运算符重载331 12.1运算符重载的作用和实现机制331 12.1.1运算符重载的原理和意义332 12.1.2运算符重载的限制335 12.2运算符成员函数与友元函数336 12.3单目运算符重载337 12.4重载流插入和流提取运算符343 12.5一般双目运算符重载346 12.6赋值运算符重载350 12.7类型之间的转换354 习题361 第13章继承和多态364 13.1继承和派生的概念365 13.2继承的定义365 13.2.1派生类和基类366 13.2.2继承的方式367 13.2.3类的层次368 13.2.4在派生类中重定义基类的函数368 13.2.5派生类和基类的转换373 13.3类指针374 13.4继承关系中的构造函数和析构函数380 13.5多重继承383 13.6多态性的概念387 13.6.1静态绑定和动态绑定387 13.6.2多态性的意义388 13.7虚函数389 13.8抽象基类和纯虚函数395 13.8.1纯虚函数395 13.8.2抽象类和具体类395 13.9虚析构函数399 13.10软件渐增式开发404 13.10.1复合、继承与多态404 13.10.2示例404 习题419 第14章异常421 14.1异常处理的意义421 14.2异常处理基础422 14.3异常的抛出和传播425 14.4异常的捕获和处理428 习题431 第15章模板433 15.1类属机制433 15.2函数模板434 15.2.1函数模板的定义434 15.2.2使用函数模板435 15.3类模板439 15.3.1类模板的定义440 15.3.2使用类模板441 习题443 附录AC++运算符的优先级和结合性444 附录BASCII字符集446 参考文献448