目录 第1章程序设计基础知识1 1.1计算机中数的表示与编码1 1.1.1进位计数制2 1.1.2二进制数的编码表示4 1.1.3常用的信息编码6 1.2程序设计及程序设计语言7 1.3算法及算法表示8 1.4程序设计方法10 1.4.1结构化程序设计10 1.4.2面向对象程序设计11 1.5小结与知识扩展12 1.5.1小结12 1.5.2计算机中常用存储单位及其换算13 习题13 第2章C++简单程序设计15 2.1C++程序的基本结构和要素16 2.1.1一个简单的C++程序16 2.1.2字符集17 2.1.3词法记号17 2.1.4注释18 2.2基本数据类型和数据19 2.2.1基本数据类型20 2.2.2常量21 2.2.3变量和引用25 2.3运算符与表达式27 2.3.1算术表达式28 2.3.2赋值表达式29 2.3.3逗号表达式30 2.3.4关系表示式31 2.3.5逻辑表达式32 2.3.6条件表达式33 2.3.7sizeof运算符34 2.3.8位运算34 2.3.9运算符的优先级和结合性36 2.4数据类型转换37 2.4.1赋值时的类型转换37 2.4.2表达式中隐含转换39 2.4.3强制类型转换39 2.5简单的输入与输出控制40 2.5.1C++的输入与输出40 2.5.2使用I/O流控制符控制输出格式41 2.6C++基础知识综合编程案例42 2.7小结与知识扩展44 2.7.1小结44 2.7.2C语言的printf()和scanf()函数44 2.7.3C语言的getchar()和putchar()函数46 2.7.4数据溢出47 习题48 目录C++程序设计基础(第2版)第3章程序控制结构51 3.1顺序控制结构51 3.2选择控制结构52 3.2.1选择控制语句if…else52 3.2.2条件运算符(?:)代替if…else语句53 3.2.3if…else语句的嵌套54 3.2.4多路选择控制语句switch57 3.3循环控制结构58 3.3.1while语句58 3.3.2do…while语句60 3.3.3for语句61 3.3.4循环嵌套62 3.4程序控制进阶63 3.4.1其他控制语句63 3.4.2输入信息控制循环66 3.5程序控制综合编程案例68 3.6小结与知识扩展75 3.6.1小结75 3.6.2字符函数库76 习题77 第4章函数82 4.1函数的定义与调用82 4.1.1函数定义83 4.1.2函数调用85 4.2函数的参数传递87 4.2.1数值传递88 4.2.2引用传递89 4.2.3使用const说明参数90 4.2.4默认参数值的函数91 4.3递归函数92 4.4函数探幽95 4.4.1内联函数95 4.4.2函数重载97 4.4.3函数模板99 4.5使用C++系统函数101 4.6函数综合编程案例102 4.7小结与知识扩展106 4.7.1小结106 4.7.2main()函数106 习题108 第5章数组113 5.1数组的基本概念113 5.2一维数组114 5.2.1一维数组的声明114 5.2.2一维数组的初始化114 5.2.3访问一维数组的元素115 5.3多维数组118 5.3.1二维数组的声明118 5.3.2二维数组的初始化119 5.3.3访问二维数组的元素119 5.4数组作为函数参数122 5.4.1一维数组名作为参数122 5.4.2二维数组的行地址作为参数124 5.5数组与字符串126 5.5.1字符型数组的声明及其初始化126 5.5.2字符串的基本操作127 5.6数组综合编程案例130 5.6.1排序130 5.6.2查找132 5.6.3统计134 5.6.4字符处理136 5.6.5数列处理137 5.7小结与知识扩展139 5.7.1小结139 5.7.2数组越界139 5.7.3算法的时间复杂度及其表示140 习题141 第6章自定义数据类型145 6.1结构体145 6.1.1结构体的定义145 6.1.2结构体的使用147 6.1.3结构体数组149 6.2共用体151 6.3枚举类型153 6.4类型自定义语句155 6.5类和对象156 6.6小结与知识扩展157 6.6.1小结157 6.6.2结构体的大小158 习题159 第7章指针160 7.1指针概述160 7.1.1指针的概念160 7.1.2指针变量的定义162 7.1.3指针的基本操作163 7.1.4指针的运算164 7.2指针与数组167 7.2.1指针与数组的关系167 7.2.2使用指针访问一维数组元素167 7.2.3使用指针访问二维数组元素169 7.2.4多级指针171 7.3指针与函数173 7.3.1指针作为函数参数173 7.3.2指向函数的指针175 7.3.3指针作为函数的返回类型178 7.4指针与字符串179 7.4.1字符型指针与字符串179 7.4.2使用字符型指针数组操作字符串181 7.4.3字符串标准库函数182 7.5动态内存分配与new和delete运算符183 7.5.1动态内存分配183 7.5.2new运算符184 7.5.3delete运算符185 7.6指针综合编程案例186 7.7小结与知识扩展193 7.7.1小结193 7.7.2malloc()和free()函数194 7.7.3常指针196 7.7.4链表操作197 习题203 第8章数据的共享与保护205 8.1作用域与生存期205 8.1.1作用域205 8.1.2生存期208 8.1.3局部变量和全局变量209 8.2编译预处理210 8.2.1文件包含210 8.2.2宏定义211 8.2.3条件编译216 8.3多文件结构218 8.4命名空间219 8.5小结与知识扩展222 8.5.1小结222 8.5.2命令行参数222 8.5.3异常处理224 习题227 第9章输入/输出流与文件操作230 9.1输入/输出流概述230 9.1.1输入/输出流的概念230 9.1.2输入/输出标准流231 9.2控制输出格式232 9.2.1使用流控制符232 9.2.2使用流类成员函数233 9.3使用流类成员函数实现输入/输出235 9.3.1输入函数235 9.3.2输出函数237 9.4串流类238 9.5文件流类及文件操作239 9.5.1文件的概念239 9.5.2文件的读写操作240 9.6小结与知识扩展243 9.6.1小结243 9.6.2C语言的文件操作函数244 习题249 第10章面向对象程序设计252 10.1面向对象程序设计思想252 10.1.1结构化程序设计的不足252 10.1.2从结构化程序设计到面向对象程序设计253 10.1.3面向对象的概念和方法254 10.1.4面向对象程序设计的特点255 10.2类和对象257 10.2.1类的定义257 10.2.2对象的定义及其使用258 10.2.3面向对象的标记259 10.3类的构造函数和析构函数261 10.4类的组合264 10.5类中数据和函数的共享与保护266 10.5.1静态成员266 10.5.2友元268 10.6小结与知识扩展271 10.6.1小结271 10.6.2常类型272 习题275 第11章继承性280 11.1继承与派生280 11.1.1派生类的定义280 11.1.2派生类生成过程281 11.1.3多层次派生282 11.2类的继承方式283 11.2.1公有继承284 11.2.2保护继承285 11.2.3私有继承286 11.3派生类的构造函数和析构函数287 11.4派生中成员的标识与访问289 11.4.1作用域分辨符290 11.4.2多继承中作用域的分辨290 11.5对象指针292 11.6小结与知识扩展294 11.6.1小结294 11.6.2虚基类解决“二义性”295 习题297 第12章多态性304 12.1多态概述304 12.1.1多态性的基本概念304 12.1.2联编与多态的实现方式304 12.1.3多态的实现原理305 12.2运算符重载305 12.2.1运算符重载的规则和形式306 12.2.2运算符重载为成员函数307 12.2.3运算符重载为友元函数309 12.2.4运算符重载实例310 12.3虚函数314 12.3.1虚函数概述314 12.3.2虚函数的限制316 12.3.3虚析构函数316 12.3.4纯虚函数和抽象类317 12.4小结与知识扩展319 12.4.1小结319 12.4.2重载new和delete运算符319 习题320 参考文献322