目录 第1部分基础篇 第1章程序设计基础31.1计算机系统和工作原理3 1.1.1计算机系统的组成3 1.1.2指令与程序5 1.2信息的表示与存储7 1.2.1计算机的数字系统7 1.2.2进位计数制的转换8 1.2.3数值数据的表示11 1.2.4非数值数据的表示15 1.3程序设计语言16 1.3.1机器语言与汇编语言16 1.3.2高级语言17 1.4程序设计概述18 1.4.1计算机问题求解的基本特点18 1.4.2算法的定义与特性18 1.4.3算法的表示19 1.4.4结构化程序设计21 1.4.5面向对象程序设计22 1.5C++概述23 1.5.1C++与C语言23 1.5.2C++基本词法23 1.5.3简单的C++程序25 1.5.4C++程序基本结构29 习题30 第2部分语言篇 第2章数据及计算332.1数据类型33 2.1.1整型34 2.1.2浮点型35 2.1.3字符型36 2.1.4逻辑型37 2.2常量38 2.2.1整型常量38 2.2.2浮点型常量39 2.2.3字符常量39 2.2.4字符串常量41 2.2.5符号常量42 2.3变量43 2.3.1变量的概念43 2.3.2定义变量43 2.3.3使用变量44 2.3.4存储类别45 2.3.5类型限定45 2.4运算符与表达式47 2.4.1运算符与表达式的概念47 2.4.2算术运算符49 2.4.3自增自减运算符50 2.4.4关系运算符51 2.4.5逻辑运算符53 2.4.6条件运算符54 2.4.7位运算符55 2.4.8赋值运算符59 2.4.9取长度运算符61 2.4.10逗号运算符62 2.4.11圆括号运算符62 2.4.12常量表达式63 2.5类型转换63 2.5.1隐式类型转换63 2.5.2显式类型转换66 习题67 第3章流程控制69 3.1语句69 3.1.1简单语句69 3.1.2复合语句70 3.1.3注释71 3.1.4语句的写法73 3.2输入与输出74 3.2.1输入流与输出流75 3.2.2字符输入与输出82 3.2.3格式化输出83 3.2.4格式化输入87 3.3程序顺序结构89 3.3.1顺序执行89 3.3.2跳转执行90 3.4程序选择结构91 3.4.1if语句91 3.4.2switch语句94 3.4.3选择结构的嵌套97 3.4.4选择结构程序举例101 3.5程序循环结构103 3.5.1while语句103 3.5.2do语句105 3.5.3for语句106 3.5.4break语句108 3.5.5continue语句109 3.5.6循环结构的嵌套110 3.5.7循环结构程序举例110 习题114 第4章程序模块化——函数117 4.1函数定义117 4.1.1函数定义的一般形式117 4.1.2函数返回120 4.2函数参数121 4.2.1形式参数121 4.2.2实际参数122 4.2.3参数传递机制122 4.2.4函数调用栈123 4.2.5const参数125 4.2.6可变参数函数125 4.3函数原型与调用127 4.3.1函数声明和函数原型127 4.3.2库函数的调用方法130 4.3.3常用库函数131 4.4内联函数135 4.5默认参数136 4.5.1带默认参数的函数136 4.5.2默认参数函数的调用138 4.6函数重载139 4.6.1函数重载定义139 4.6.2重载函数的调用142 4.7函数模板144 4.7.1函数模板的概念144 4.7.2函数模板的定义和使用145 4.8函数调用形式149 4.8.1嵌套调用149 4.8.2递归调用151 4.9作用域和生命期153 4.9.1局部变量153 4.9.2全局变量154 4.9.3作用域155 4.9.4程序映像和内存布局158 4.9.5生命期161 4.10对象初始化164 4.11声明与定义166 4.12变量修饰小结168 4.13程序组织结构169 4.13.1内部函数169 4.13.2外部函数170 4.13.3多文件结构170 4.13.4头文件与工程文件171 4.13.5提高编译速度173 4.14函数应用程序举例174 习题177 第5章任务自动化——预处理179 5.1宏定义179 5.1.1不带参数的宏定义180 5.1.2带参数的宏定义182 5.1.3#和##预处理运算186 5.1.4预定义宏186 5.2文件包含187 5.3条件编译189 5.3.1#define定义条件189 5.3.2#ifdef、#ifndef189 5.3.3#if#elif190 习题191 第6章批量数据——数组193 6.1一维数组的定义和引用193 6.1.1一维数组的定义193 6.1.2一维数组的初始化195 6.1.3一维数组的引用195 6.2多维数组的定义和引用197 6.2.1多维数组的定义197 6.2.2多维数组的初始化199 6.2.3多维数组的引用200 6.3数组与函数203 6.3.1数组作为函数的参数203 6.3.2数组参数的传递机制204 6.4字符串207 6.4.1字符数组207 6.4.2字符串209 6.4.3字符串的输入和输出211 6.4.4字符串数组213 6.4.5字符串处理函数214 6.5C++字符串类219 6.5.1字符串对象的定义和引用219 6.5.2字符串对象的操作220 6.5.3字符串对象数组223 6.6数组应用程序举例224 习题233 第7章引用数据236 7.1指针与指针变量236 7.1.1地址和指针的概念236 7.1.2指针变量237 7.2指针的使用及运算239 7.2.1获取对象的地址239 7.2.2指针的间接访问240 7.2.3指针变量的初始化与赋值242 7.2.4指针的有效性244 7.2.5指针运算245 7.2.6指针的const限定250 7.3指针与数组252 7.3.1指向一维数组元素的指针253 7.3.2指向多维数组元素的指针257 7.3.3数组指针260 7.3.4指针数组262 7.3.5指向指针的指针264 7.4指针与字符串267 7.4.1指向字符串的指针267 7.4.2指针与字符数组的比较269 7.4.3指向字符串数组的指针270 7.5指针与函数272 7.5.1指针作为函数参数272 7.5.2函数返回指针值281 7.5.3函数指针282 7.6动态内存286 7.6.1动态内存的概念286 7.6.2动态内存的分配和释放287 7.6.3动态内存的应用290 7.7带参数的main函数294 7.8引用类型295 7.8.1引用的概念与定义295 7.8.2引用的使用296 7.8.3常引用299 7.8.4对象、指针与引用的比较300 习题301 第8章组合数据——自定义类型303 8.1结构体类型303 8.2结构体对象305 8.2.1结构体对象的定义305 8.2.2结构体对象的初始化308 8.2.3结构体对象的使用308 8.3结构体与数组309 8.3.1结构体数组309 8.3.2结构体数组成员310 8.4结构体与指针311 8.4.1指向结构体的指针311 8.4.2指向结构体数组的指针313 8.4.3结构体指针成员314 8.5结构体与函数315 8.5.1结构体对象作为函数参数315 8.5.2结构体数组作为函数参数315 8.5.3结构体指针或引用作为函数参数316 8.5.4函数返回结构体对象、指针或引用316 8.6共用体317 8.6.1共用体概念及类型定义317 8.6.2共用体对象的定义318 8.6.3共用体对象的使用319 8.6.4结构体与共用体嵌套320 8.7枚举类型320 8.7.1枚举类型的声明320 8.7.2枚举类型对象321 8.8位域321 8.8.1位域的声明321 8.8.2位域的使用323 8.9用户自定义类型324 习题326 第3部分方法篇 第9章类与对象3319.1类的定义和声明331 9.1.1类的定义331 9.1.2成员访问控制334 9.1.3类的数据成员335 9.1.4类的成员函数336 9.1.5类声明与类定义340 9.1.6类之间的关系341 9.1.7类和结构体的区别343 9.2对象的定义和使用343 9.2.1对象的定义343 9.2.2对象的动态建立和释放345 9.2.3对象成员的引用346 9.3构造函数和析构函数351 9.3.1构造函数351 9.3.2构造函数的重载357 9.3.3带默认参数的构造函数358 9.3.4默认构造函数360 9.3.5隐式类类型转换361 9.3.6复制构造函数362 9.3.7构造函数小结367 9.3.8析构函数368 9.3.9构造函数和析构函数的调用次序370 9.4对象数组371 9.5对象指针372 9.5.1指向对象的指针372 9.5.2类成员指针372 9.5.3this指针374 9.6类作用域与对象生命期375 9.6.1类作用域375 9.6.2对象生命期380 9.7const限定383 9.7.1常对象383 9.7.2常数据成员384 9.7.3常成员函数385 9.7.4指向对象的常指针386 9.7.5指向常对象的指针变量387 9.7.6对象的常引用387 9.8静态成员388 9.8.1静态数据成员388 9.8.2静态成员函数390 9.9友元392 9.9.1友元函数392 9.9.2友元类394 9.10类模板394 9.10.1类模板的定义394 9.10.2泛型编程397 9.11数据封装和信息隐蔽398 习题400 第10章继承与派生402 10.1类的继承与派生402 10.1.1基类与派生类402 10.1.2派生类的定义404 10.1.3派生类的构成405 10.2派生类成员的访问406 10.2.1类的保护成员406 10.2.2派生类成员的访问权限407 10.3赋值兼容规则409 10.4派生类的构造和析构函数410 10.4.1派生类的构造函数410 10.4.2派生类的析构函数412 10.5多重继承412 10.5.1多重继承派生类412 10.5.2二义性问题及名字支配规则413 10.5.3虚基类415 10.6多态性与虚函数416 10.6.1多态性的概念416 10.6.2虚函数420 10.6.3虚析构函数425 10.6.4纯虚函数425 10.6.5抽象类426 10.7命名的强制类型转换427 习题432 第11章运算符重载433 11.1运算符重载的概念433 11.2运算符重载的方法433 11.2.1运算符函数433 11.2.2重载运算符的规则436 11.2.3运算符重载为类成员函数438 11.2.4运算符重载为友元函数440 11.3典型运算符的重载441 11.3.1重载双目运算符441 11.3.2重载单目运算符443 11.3.3重载复合赋值运算符444 11.3.4重载流运算符444 11.3.5重载类型转换运算符446 习题447 第4部分工具篇 第12章异常处理45112.1基本概念451 12.1.1为什么要异常处理451 12.1.2程序健壮性452 12.1.3异常处理的方法452 12.2异常处理的实现453 12.2.1抛出异常453 12.2.2检测捕获异常454 12.2.3函数声明中的异常接口说明458 12.2.4异常处理中的构造与析构458 习题459 第13章命名空间460 13.1命名空间的概念460 13.2命名空间的定义与未命名的命名空间462 13.2.1命名空间的定义462 13.2.2未命名的命名空间466 13.3命名空间的使用467 13.3.1命名空间成员的使用467 13.3.2类和命名空间469 13.3.3标准命名空间的使用471 习题472 第14章标准库473 14.1C++标准库473 14.2标准输入输出474 14.2.1C++流的概念474 14.2.2文件流476 14.2.3字符串流483 14.3标准模板库485 14.3.1迭代器485 14.3.2向量486 14.3.3列表487 14.3.4队列489 14.3.5栈489 习题490 附录AASCII码对照表492 附录BC++关键字493 附录CC++运算符及其优先级、结合性495 参考文献498