C++程序设计语言
Book information
Description
本书是在C++语言和程序设计领域具有深远影响、畅销不衰的著作,由C++语言的设计者编写,对C++语言进行了最全面、最权威的论述,覆盖标准C++以及由C++所支持的关键性编程技术和设计技术。本书英文原版一经面世,即引起业内人士的高度评价和热烈欢迎,先后被翻译成德、希、匈、西、荷、法、日、俄、中、韩等近20种语言,数以百万计的程序员从中获益,是无可取代的C++经典力作。 在本书英文原版面世10年后的今天,特别奉上十周年中文纪念版,希望众多具有丰富实战经验的C++开发人员能够温故而知新,印证学习心得,了解更加本质的C++知识,让获得的理论应用得更加灵活,也期望新的C++程序员从中认识到这本书的价值所在,从更高的起点出发,书写更加精彩的程序设计人生。 第1章 致读者 1.1本书的结构 1.1.1例子和参考 1.1.2练习 1.1.3有关实现的注记 1.2学习C++ 1.3 C++的设计 1.3.1效率和结构 1.3.2哲学注记 1.4历史注记 1.5 C++的使用 1.6 C和C++ 1.6.1给C程序员的建议 1.6.2给C++程序员的建议 1.7有关在C++里编程的思考 1.8忠告 1.9参考文献 第2章 C++概览 2.1为什么是C++ 2.2程序设计范型 2.3过程式程序设计 2.3.1变量和算术 2.3.2检测和循环 2.3.3指针和数组 2.4模块程序设计 2.4.1分别编译 2.4.2异常处理 2.5数据抽象 2.5.1定义类型的模块 2.5.2用户定义类型 2.5.3具体类型 2.5.4抽象类型 2.5.5虚函数 2.6面向对象的程序设计 2.6.1具体类型的问题 2.6.2类层次结构 2.7通用型程序设计 2.7.1容器 2.7.2通用型算法 2.8附言 2.9忠告 第3章 标准库概览 3.1引言 3.2 Hello, world! 3.3标准库名字空间 3.4输出 3.5字符串 3.5.1 C风格的字符串 3.6输入 3.7容器 3.7.1向量——vector 3.7.2范围检查 3.7.3表——list 3.7.4映射——map 3.7.5标准容器 3.8算法 3.8.1迭代器的使用 3.8.2迭代器类型 3.8.3迭代器和I/O 3.8.4遍历和谓词 3.8.5使用成员函数的算法 3.8.6标准库算法 3.9数学 3.9.1复数 3.9.2向量算术 3.9.3基本数值支持 3.10标准库功能 3.11忠告 第4章 类型和声明 4.1类型 4.1.1基本类型 4.2布尔量 4.3字符类型 4.3.1字符文字量 4.4整数类型 4.4.1整数文字量 4.5浮点类型 4.5.1浮点文字量 4.6大小 4.7void 4.8枚举 4.9声明 4.9.1声明的结构 4.9.2声明多个名字 4.9.3名字 4.9.4作用域 4.9.5初始化 4.9.6对象和左值 4.9.7 typedef 4.10忠告 4.11练习 第5章 指针、数组和结构 5.1指针 5.1.1零 5.2数组 5.2.1数组初始化 5.2.2字符串文字量 5.3到数组的指针 5.3.1在数组里漫游 5.4常量 5.4.1指针和常量 5.5引用 5.6指向void的指针 5.7结构 5.7.1类型等价 5.8忠告 5.9练习 第6章 表达式和语句 6.1一个桌面计算器 6.1.1分析器 6.1.2输入函数 6.1.3低级输入 6.1.4错误处理 6.1.5驱动程序 6.1.6头文件 6.1.7命令行参数 6.1.8有关风格的注记 6.2运算符概览 6.2.1结果 6.2.2求值顺序 6.2.3运算符优先级 6.2.4按位逻辑运算符 6.2.5增量和减量 6.2.6自由存储 6.2.7显式类型转换 6.2.8构造函数 6.3语句概览 6.3.1声明作为语句 6.3.2选择语句 6.3.3迭代语句 6.3.4 goto 6.4注释和缩进编排 6.5忠告 6.6练习 第7章 函数 7.1函数声明 7.1.1函数定义 7.1.2静态变量 7.2参数传递 7.2.1数组参数 7.3返回值 7.4重载函数名 7.4.1重载和返回类型 7.4.2重载与作用域 7.4.3手工的歧义性解析 7.4.4多参数的解析 7.5默认参数 7.6未确定数目的参数 7.7指向函数的指针 7.8宏 7.8.1条件编译 7.9忠告 7.10练习 第8章 名字空间和异常 8.1模块化和界面 8.2名字空间 8.2.1带限定词的名字 8.2.2使用声明 8.2.3使用指令 8.2.4多重界面 8.2.5避免名字冲突 8.2.6名字查找 8.2.7名字空间别名 8.2.8名字空间组合 8.2.9名字空问和老代码 8.3异常 8.3.1抛出和捕捉 8.3.2异常的辨识 8.3.3在计算器中的异常 8.4忠告 8.5练习 第9章 源文件和程序 9.1分别编译 9.2连接 9.2.1头文件 9.2.2标准库头文件 9.2.3单一定义规则 9.2.4与非C++代码的连接 9.2.5连接与指向函数的指针 9.3使用头文件 9.3.1单一头文件 9.3.2多个头文件 9.3.3包含保护符 9.4程序 9.4.1非局部变量的初始化 9.5忠告 9.6练习 第10章 类 10.1引言 10.2类 10.2.1成员函数 10.2.2访问控制 10.2.3构造函数 10.2.4静态成员 10.2.5类对象的复制 10.2.6常量成员函数 10.2.7自引用 10.2.8结构和类 10.2.9在类内部的函数定义 10.3高效的用户定义类型 10.3.1成员函数 10.3.2协助函数 10.3.3重载的运算符 10.3.4具体类型的意义 10.4对象 10.4.1析构函数 10.4.2默认构造函数 10.4.3构造和析构 10.4.4局部变量 10.4.5自由存储 10.4.6类对象作为成员 10.4.7数组 10.4.8局部静态存储 10.4.9非局部存储 10.4.10临时对象 10.4.11对象的放置 10.4.12联合 10.5忠告 10.6练习 第11章 运算符重载 11.1引言 11.2运算符函数 11.2.1二元和一元运算符 11.2.2运算符的预定义意义 11.2.3运算符和用户定义类型 11.2.4名字空问里的运算符 11.3一个复数类型 11.3.1成员运算符和非成员运算符 11.3.2混合模式算术 11.3.3初始化 11.3.4复制 11.3.5构造函数和转换 11.3.6文字量 11.3.7另一些成员函数 11.3.8协助函数 11.4转换运算符 11.4.1歧义性 11.5友元 11.5.1友元的寻找 11.5.2友元和成员 11.6大型对象 11.7基本运算符 11.7.1显式构造函数 11.8下标 11.9函数调用 11.10间接 11.11增量和减量 11.12一个字符串类 11.13忠告 11.14练习 第12章 派生类 12.1引言 12.2派生类 12.2.1成员函数 12.2.2构造函数和析构函数 12.2.3复制 12.2.4类层次结构 12.2.5类型域 12.2.6虚函数 12.3抽象类 12.4类层次结构的设计 12.4.1一个传统的层次结构 12.4.2抽象类 12.4.3其他实现方式 12.4.4对象创建的局部化 12.5类层次结构和抽象类 12.6忠告 12.7练习 第13章 模板 13.1引言 13.2一个简单的String模板 13.2.1定义一个模板 13.2.2模板实例化 13.2.3模板参数 13.2.4类型等价 13.2.5类型检查 13.3函数模板 13.3.1函数模板的参数 13.3.2函数模板的重载 13.4用模板参数描述策略 13.4.1默认模板参数 13.5专门化 13.5.1专门化的顺序 13.5.2模板函数的专门化 13.6派生和模板 13.6.1参数化和继承 13.6.2成员模板 13.6.3继承关系 13.7源代码组织 13.8忠告 13.9练习 第14章 异常处理 14.1错误处理 14.1.1关于异常的其他观点 14.2异常的结组 14.2.1派生的异常 14.2.2多个异常的组合 14.3捕捉异常 14.3.1重新抛出 14.3.2捕捉所有异常 14.4资源管理 14.4.1构造函数和析构函数的使用 14.4.2 auto_ptr 14.4.3告诫 14.4.4异常和new 14.4.5资源耗尽 14.4.6构造函数里的异常 14.4.7析构函数里的异常 14.5不是错误的异常 14.6异常的描述 14.6.1对异常描述的检查 14.6.2未预期的异常 14.6.3异常的映射 14.7未捕捉的异常 14.8异常和效率 14.9处理错误的其他方式 14.10标准异常 14.11忠告 14.12练习 第15章 类层次结构 15.1引言和概述 15.2多重继承 15.2.1歧义性解析 15.2.2继承和使用声明 15.2.3重复的基类 15.2.4虚基类 15.2.5使用多重继承 15.3访问控制 15.3.1保护成员 15.3.2对基类的访问 15.4运行时类型信息 15.4.1 dynamic_cast 15.4.2在类层次结构中漫游 15.4.3类对象的构造与析构 15.4.4 typeid和扩展的类型信息 15.4.5 RTTI的使用和误用 15.5指向成员的指针 15.5.1基类和派生类 15.6自由存储 15.6.1数组分配 15.6.2虚构造函数 15.7忠告 15.8练习 第16章 库组织和容器 16.1标准库的设计 16.1.1设计约束 16.1.2标准库组织 16.1.3语言支持 16.2容器设计 16.2.1专门化的容器和迭代器 16.2.2有基类的容器 16.2.3 STL容器 16.3向量 16.3.1类型 16.3.2迭代器 16.3.3元素访问 16.3.4构造函数 16.3.5堆栈操作 16.3.6表操作 16.3.7元素定位 16.3.8大小和容量 16.3.9其他成员函数 16.3.10协助函数 16.3.11 vector<bool> 16.4忠告 16.5练习 第17章 标准容器 17.1标准容器 17.1.1操作综述 17.1.2容器综述 17.1.3表示 17.1.4对元素的要求 17.2序列 17.2.1向量——vector 17.2.2表——list 17.2.3双端队列——deque 17.3序列适配器 17.3.1堆栈——stack 17.3.2队列——queue 17.3.3优先队列——priority_queue 17.4关联容器 17.4.1映射——map 17.4.2多重映射——multimap 17.4.3集合——set 17.4.4多重集合——multiset 17.5拟容器 17.5.1串——string 17.5.2值向量——valarray 17.5.3位集合——bitset 17.5.4内部数组 17.6定义新容器 17.6.1散列映射——hash_map 17.6.2表示和构造 17.6.3其他散列关联容器 17.7忠告 17.8练习 第18章 算法和函数对象 18.1引言 18.2标准库算法综述 18.3序列和容器 18.3.1输入序列 18.4函数对象 18.4.1函数对象的基类 18.4.2谓词 18.4.3算术函数对象 18.4.4约束器、适配器和否定器 18.5非修改性序列算法 18.5.1对每个做——for_each 18.5.2查找族函数 18.5.3计数 18.5.4相等和不匹配 18.5.5搜索 18.6修改性序列算法 18.6.1复制 18.6.2变换 18.6.3惟一化 18.6.4取代 18.6.5删除 18.6.6填充和生成 18.6.7反转和旋转 18.6.8交换 18.7排序的序列 18.7.1排序 18.7.2二分检索 18.7.3归并 18.7.4划分 18.7.5序列上的集合运算 18.8堆 18.9最小和最大 18.10排列 18.11 C风格算法 18.12忠告 18.13练习 第19章 迭代器和分配器 19.1引言 19.2迭代器和序列 19.2.1迭代器的操作 19.2.2迭代器特征类——iterator_lraits 19.2.3迭代器类别 19.2.4插入器 19.2.5反向迭代器 19.2.6流迭代器 19.3带检查迭代器 19.3.1异常、容器和算法 19.4分配器 19.4.1标准分配器 19.4.2一个用户定义分配器 19.4.3广义的分配器 19.4.4未初始化的存储 19.4.5动态存储 19.4.6 C风格的分配 19.5忠告 19.6练习 第20章 串 20.1引言 20.2字符 20.2.1字符特征类——char _traits 20.3基础串类——basic string 20.3.1类型 20.3.2迭代器 20.3.3元素访问 20.3.4构造函数 20.3.5错误 20.3.6赋值 20.3.7到C风格字符串的转换 20.3.8比较 20.3.9插入 20.3.10拼接 20.3.11查找 20.3.12替换 20.3.13子串 20.3.14大小和容量 20.3.15 I/O操作 20.3.16交换 20.4 C标准库 20.4.1 C风格字符串 20.4.2字符分类 20.5忠告 20.6练习 第21章 流 21.1引言 21.2输出 21.2.1输出流 21.2.2内部类型的输出 21.2.3用户定义类型的输出 21.3输入 21.3.1输入流 21.3.2内部类型的输入 21.3.3流状态 21.3.4字符的输入 21.3.5用户定义类型的输入 21.3.6异常 21.3.7流的联结 21.3.8哨位 21.4格式化 21.4.1格式状态 21.4.2整数输出 21.4.3浮点数输出 21.4.4输出域 21.4.5域的调整 21.4.6操控符 21.5文件流与字符串流 21.5.1文件流 21.5.2流的关闭 21.5.3字符串流 21.6缓冲 21.6.1输出流和缓冲区 21.6.2输入流和缓冲区 21.6.3流和缓冲区 21.6.4流缓冲区 21.7现场 21.7.1流回调 21.8 C输入/输出 21.9忠告 21.10练习 第22章 数值 22.1引言 22.2数值的限制 22.2.1表示限制的宏 22.3标准数学函数 22.4向量算术 22.4.1 valarray的构造 22.4.2 valarray的下标和赋值 22.4.3成员操作 22.4.4非成员函数 22.4.5切割 22.4.6切割数组——slice_ array 22.4.7临时量、复制和循环 22.4.8广义切割 22.4.9屏蔽 22.4.10间接数组——indirect array 22.5复数算术 22.6通用数值算法 22.6.1累积——accumulate 22.6.2内积——inner_product 22.6.3增量变化 22.7随机数 22.8忠告 22.9练习 第23章 开发和设计 23.1概述 23.2引言 23.3目的与手段 23.4开发过程 23.4.1开发循环 23.4.2设计目标 23.4.3设计步骤 23.4.4试验和分析 23.4.5测试 23.4.6软件维护 23.4.7效率 23.5管理 23.5.1重用 23.5.2规模 23.5.3个人 23.5.4混成设计 23.6带标注的参考文献 23.7忠告 第24章 设计和编程 24.1概述 24.2设计和程序设计语言 24.2.1忽视类 24.2.2忽视继承 24.2.3忽视静态类型检查 24.2.4忽视程序设计 24.2.5排他性地使用类层次结构 24.3类 24.3.1类表示什么 24.3.2类层次结构 24.3.3包容关系 24.3.4包容和继承 24.3.5使用关系 24.3.6编入程序里的关系 24.3.7类内的关系 24.4组件 24.4.1模板 24.4.2界面和实现 24.4.3肥大的界面 24.5忠告 第25章 类的作用 25.1类的种类 25.2具体类型 25.2.1具体类型的重用 25.3抽象类型 25.4结点 25.4.1修改界面 25.5动作 25.6界面类 25.6.1调整界面 25.7句柄类 25.7.1句柄上的操作 25.8应用框架 25.9忠告 25.10练习 附录和索引 附录A语法 附录B兼容性 附录C技术细节 附录D现场 附录E标准库的异常时安全性
Similar books
The C++ Programming Language - Reference Manual
DJVU
Tour of C++, A
2022 · EPUB
Tour of C++, A (C++ In-Depth Series)
2022 · PDF
El Lenguaje de Programación C++ Edición Especial
2000 · PDF
Programming: Principles and Practice Using C++
2024 · AZW3
Programming: Principles and Practice Using C++
2024 · EPUB
Programming: Principles and Practice Using C++
2024 · PDF
Programming: Principles and Practice Using C++, Third Edition
2024 · PDF