C++ Primer中文版(第4版)(特别版)
第1章 快速入门
1.1 编写简单的C++程序
1.2 初窥输入/输出
1.2.1 标准输入与输出对象
1.2.2 一个使用IO库的程序
1.3 关于注释
1.4 控制结构
1.4.1 while语句
1.4.2 for语句
1.4.3 if语句
查看完整
1.1 编写简单的C++程序
1.2 初窥输入/输出
1.2.1 标准输入与输出对象
1.2.2 一个使用IO库的程序
1.3 关于注释
1.4 控制结构
1.4.1 while语句
1.4.2 for语句
1.4.3 if语句
查看完整
《C++ Primer(第4版)》的三位作者都是C++领域的权威人物。
Stanley B. Lippman 微软公司 Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。他还著有Inside the C++ Object Model。
Josée Lajoie 曾经是IBM加拿大研究中心C/C++编译器开发团队的成员,在ISO C++标准委员会工作了7年,担任过ISO核心语言工作组的主席和C++ Report杂志的专栏作家。
Barbara E. Moo 拥有25年软件经验的独立咨询顾问。在AT&T,她与Stroustrup、Lippman一起管理过复杂的C++开发项目。…
查看完整
Stanley B. Lippman 微软公司 Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。他还著有Inside the C++ Object Model。
Josée Lajoie 曾经是IBM加拿大研究中心C/C++编译器开发团队的成员,在ISO C++标准委员会工作了7年,担任过ISO核心语言工作组的主席和C++ Report杂志的专栏作家。
Barbara E. Moo 拥有25年软件经验的独立咨询顾问。在AT&T,她与Stroustrup、Lippman一起管理过复杂的C++开发项目。…
查看完整
C++诞生20年后,因其强大的功能、广泛的适用性和极高的效率,已经成为毋庸置疑的主流编程语言。但是C++语言也不得不面对这样的挑战:其博大精深不仅令初学者望而生畏,而且即使是许多富于经验的老手也很难全面掌握,更有不少C++程序员一直背负着C语言的历史包袱,常常落入各种微妙难解的安全和性能陷阱。如何使现代C++理念深入人心,使C++更加容易学习和使用,已经成为众所瞩目的关键问题。
C++ Primer是久负盛名、无可替代的C++经典著作,已经帮助全球无数程序员学会了C++。第4版完美结合了C++大师Stan B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准的深入理解,更加入了C++先驱Barbara E. Moo在C++教学方面的真知灼见,充分体现了C++语言的新进展和当前的业界优秀实践。
查看完整
C++ Primer是久负盛名、无可替代的C++经典著作,已经帮助全球无数程序员学会了C++。第4版完美结合了C++大师Stan B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准的深入理解,更加入了C++先驱Barbara E. Moo在C++教学方面的真知灼见,充分体现了C++语言的新进展和当前的业界优秀实践。
查看完整
第1章 快速入门
1.1 编写简单的C++程序
1.2 初窥输入/输出
1.2.1 标准输入与输出对象
1.2.2 一个使用IO库的程序
1.3 关于注释
1.4 控制结构
1.4.1 while语句
1.4.2 for语句
1.4.3 if语句
1.4.4 读入未知数目的输入
1.5 类的简介
1.5.1 Sales_item类
1.5.2 初窥成员函数
1.6 C++程序
小结
术语
第一部分 基本语言
第2章 变量和基本类型
2.1 基本内置类型
2.1.1 整型
2.1.2 浮点型
2.2 字面值常量
2.3 变量
2.3.1 什么是变量
2.3.2 变量名
2.3.3 定义对象
2.3.4 变量初始化规则
2.3.5 声明和定义
2.3.6 名字的作用域
2.3.7 在变量使用处定义变量
2.4 const限定符
2.5 引用
2.6 typedef名字
2.7 枚举
2.8 类类型
2.9 编写自己的头文件
2.9.1 设计自己的头文件
2.9.2 预处理器的简单介绍
小结
术语
第3章 标准库类型
3.1 命名空间的using声明
3.2 标准库string类型
3.2.1 string对象的定义和初始化
3.2.2 String对象的读写
3.2.3 string对象的操作
3.2.4 string对象中字符的处理
3.3 标准库vector类型
3.3.1 vector对象的定义和初始化
3.3.2 vector对象的操作
3.4 迭代器简介
3.5 标准库bitset类型
3.5.1 bitset对象的定义和初始化
3.5.2 bitset对象上的操作
小结
术语
第4章 数组和指针
4.1 数组
4.1.1 数组的定义和初始化
4.1.2 数组操作
4.2 指针的引入
4.2.1 什么是指针
4.2.2 指针的定义和初始化
4.2.3 指针操作
4.2.4 使用指针访问数组元素
4.2.5 指针和const限定符
4.3 C风格字符串
4.3.1 创建动态数组
4.3.2 新旧代码的兼容
4.4 多维数组
小结
术语
第5章 表达式
5.1 算术操作符
5.2 关系操作符和逻辑操作符
5.3 位操作符
5.3.1 bitset对象或整型值的使用
5.3.2 将移位操作符用于IO
5.4 赋值操作符
5.4.1 赋值操作的右结合性
5.4.2 赋值操作具有低优先级
5.4.3 复合赋值操作符
5.5 自增和自减操作符
5.6 箭头操作符
5.7 条件操作符
5.8 sizeof操作符
5.9 逗号操作符
5.10 复合表达式的求值
5.10.1 优先级
5.10.2 结合性
5.10.3 求值顺序
5.11 new和delete表达式
5.12 类型转换
5.12.1 何时发生隐式类型转换
5.12.2 算术转换
5.12.3 其他隐式转换
5.12.4 显式转换
5.12.5 何时需要强制类型转换
5.12.6 命名的强制类型转换
5.12.7 旧式强制类型转换
小结
术语
第6章 语句
6.1 简单语句
6.2 声明语句
6.3 复合语句(块)
6.4 语句作用域
6.5 if语句
6.6 switch语句
6.6.1 使用switch
6.6.2 switch中的控制流
6.6.3 default标号
6.6.4 switch表达式与case标号
6.6.5 switch内部的变量定义
6.7 while语句
6.8 for循环语句
6.8.1 省略for语句头的某些部分
6.8.2 for语句头中的多个定义
6.9 do while语句
6.10 break语句
6.11 continue语句
6.12 goto语句
6.13 try块和异常处理
6.13.1 throw表达式
6.13.2 try块
6.13.3 标准异常
6.14 使用预处理器进行调试
小结
术语
第7章 函数
7.1 函数的定义
7.1.1 函数返回类型
7.1.2 函数形参表
7.2 参数传递
7.2.1 非引用形参
7.2.2 引用形参
7.2.3 vector和其他容器类型的形参
7.2.4 数组形参
7.2.5 传递给函数的数组的处理
7.2.6 main:处理命令行选项
7.2.7 含有可变形参的函数
7.3 return语句
7.3.1 没有返回值的函数
7.3.2 具有返回值的函数
7.3.3 递归
7.4 函数声明
7.5 局部对象
7.5.1 自动对象
7.5.2 静态局部对象
7.6 内联函数
7.7 类的成员函数
7.7.1 定义成员函数的函数体
7.7.2 在类外定义成员函数
7.7.3 编写Sales_item类的构造函数
7.7.4 类代码文件的组织
7.8 重载函数
7.8.1 重载与作用域
7.8.2 函数匹配与实参转换
7.8.3 重载确定的三个步骤
7.8.4 实参类型转换
7.9 指向函数的指针
小结
术语
第8章 标准IO库
8.1 面向对象的标准库
8.2 条件状态
8.3 输出缓冲区的管理
8.4 文件的输入和输出
8.4.1 文件流对象的使用
8.4.2 文件模式
8.4.3 一个打开并检查输入文件的程序
8.5 字符串流
小结
术语
第二部分 容器和算法
第9章 顺序容器
9.1 顺序容器的定义
9.1.1 容器元素的初始化
9.1.2 容器内元素的类型约束
9.2 迭代器和迭代器范围
9.2.1 迭代器范围
9.2.2 使迭代器失效的容器操作
9.3 顺序容器的操作
9.3.1 容器定义的类型别名
9.3.2 begin和end成员
9.3.3 在顺序容器中添加元素
9.3.4 关系操作符
9.3.5 容器大小的操作
9.3.6 访问元素
9.3.7 删除元素
9.3.8 赋值与swap
9.4 vector容器的自增长
9.5 容器的选用
9.6 再谈string类型
9.6.1 构造string对象的其他方法
9.6.2 修改string对象的其他方法
9.6.3 只适用于string类型的操作
9.6.4 string类型的查找操作
9.6.5 string对象的比较
9.7 容器适配器
9.7.1 栈适配器
9.7.2 队列和优先级队列
小结
术语
第10章 关联容器
10.1 引言:pair类型
10.2 关联容器
10.3 map类型
10.3.1 map对象的定义
10.3.2 map定义的类型
10.3.3 给map添加元素
10.3.4 使用下标访问map对象
10.3.5 map::insert的使用
10.3.6 查找并读取map中的元素
10.3.7 从map对象中删除元素
10.3.8 map对象的迭代遍历
10.3.9 “单词转换”map对象
10.4 set类型
10.4.1 set容器的定义和使用
10.4.2 创建“单词排除”集
10.5 multimap和multiset类型
10.5.1 元素的添加和删除
10.5.2 在multimap和multiset中查找元素
10.6 容器的综合应用:文本查询程序
10.6.1 查询程序的设计
10.6.2 TextQuery类
10.6.3 TextQuery类的使用
10.6.4 编写成员函数
小结
术语
第11章 泛型算法
11.1 概述
11.2 初窥算法
11.2.1 只读算法
11.2.2 写容器元素的算法
11.2.3 对容器元素重新排序的算法
11.3 再谈迭代器
11.3.1 插入迭代器
11.3.2 iostream迭代器
11.3.3 反向迭代器
11.3.4 const迭代器
11.3.5 五种迭代器
11.4 泛型算法的结构
11.4.1 算法的形参模式
11.4.2 算法的命名规范
11.5 容器特有的算法
小结
术语
第三部分 类和数据抽象
第12章 类
12.1 类的定义和声明
12.1.1 类定义:扼要重述
12.1.2 数据抽象和封装
12.1.3 关于类定义的更多内容
12.1.4 类声明与类定义
12.1.5 类对象
12.2 隐含的this指针
12.3 类作用域
12.4 构造函数
12.4.1 构造函数初始化式
12.4.2 默认实参与构造函数
12.4.3 默认构造函数
12.4.4 隐式类类型转换
12.4.5 类成员的显式初始化
12.5 友元
12.6 static类成员
12.6.1 static成员函数
12.6.2 static数据成员
小结
术语
第13章 复制控制
13.1 复制构造函数
13.1.1 合成的复制构造函数
13.1.2 定义自己的复制构造函数
13.1.3 禁止复制
13.2 赋值操作符
13.3 析构函数
13.4 消息处理示例
13.5 管理指针成员
13.5.1 定义智能指针类
13.5.2 定义值型类
小结
术语
第14章 重载操作符与转换
14.1 重载操作符的定义
14.2 输入和输出操作符
14.2.1 输出操作符的重载
14.3 算术操作符和关系操作符
14.3.1 相等操作符
14.3.2 关系操作符
14.4 赋值操作符
14.5 下标操作符
14.6 成员访问操作符
14.7 自增操作符和自减操作符
14.8 调用操作符和函数对象
14.8.1 将函数对象用于标准库算法
14.8.2 标准库定义的函数对象
14.8.3 函数对象的函数适配器
14.9 转换与类类型
14.9.1 转换为什么有用
14.9.2 转换操作符
14.9.3 实参匹配和转换
14.9.4 重载确定和类的实参
14.9.5 重载、转换和操作符
小结
术语
第四部分 面向对象编程与泛型编程
第15章 面向对象编程
15.1 面向对象编程:概述
15.2 定义基类和派生类
15.2.1 定义基类
15.2.2 protected成员
15.2.3 派生类
15.2.4 virtual与其他成员函数
15.2.5 公用、私有和受保护的继承
15.2.6 友元关系与继承
15.2.7 继承与静态成员
15.3 转换与继承
15.3.1 派生类到基类的转换
15.3.2 基类到派生类的转换
15.4 构造函数和复制控制
15.4.1 基类构造函数和复制控制
15.4.2 派生类构造函数
15.4.3 复制控制和继承
15.4.4 虚析构函数
15.4.5 构造函数和析构函数中的虚函数
15.5 继承情况下的类作用域
15.5.1 名字查找在编译时发生
15.5.2 名字冲突与继承
15.5.3 作用域与成员函数
15.5.4 虚函数与作用域
15.6 纯虚函数
15.7 容器与继承
15.8 句柄类与继承
15.8.1 指针型句柄
15.8.2 复制未知类型
15.8.3 句柄的使用
15.9 再谈文本查询示例
15.9.1 面向对象的解决方案
15.9.2 值型句柄
15.9.3 Query_base类
15.9.4 Query句柄类
15.9.5 派生类
15.9.6 eval函数
小结
术语
第16章 模板与泛型编程
16.1 模板定义
16.1.1 定义函数模板
16.1.2 定义类模板
16.1.3 模板形参
16.1.4 模板类型形参
16.1.5 非类型模板形参
16.1.6 编写泛型程序
16.2 实例化
16.2.1 模板实参推断
16.2.2 函数模板的显式实参
16.3 模板编译模型
16.4 类模板成员
16.4.1 类模板成员函数
16.4.2 非类型形参的模板实参
16.4.3 类模板中的友元声明
16.4.4 Queue和QueueItem的友元声明
16.4.5 成员模板
16.4.6 完整的Queue类
16.4.7 类模板的static成员
16.5 一个泛型句柄类
16.5.1 定义句柄类
16.5.2 使用句柄
16.6 模板特化
16.6.1 函数模板的特化
16.6.2 类模板的特化
16.6.3 特化成员而不特化类
16.6.4 类模板的部分特化
16.7 重载与函数模板
小结
术语
第五部分 高级主题
第17章 用于大型程序的工具
17.1 异常处理
17.1.1 抛出类类型的异常
17.1.2 栈展开
17.1.3 捕获异常
17.1.4 重新抛出
17.1.5 捕获所有异常的处理代码
17.1.6 函数测试块与构造函数
17.1.7 异常类层次
17.1.8 自动资源释放
17.1.9 auto_ptr类
17.1.10 异常说明
17.1.11 函数指针的异常说明
17.2 命名空间
17.2.1 命名空间的定义
17.2.2 嵌套命名空间
17.2.3 未命名的命名空间
17.2.4 命名空间成员的使用
17.2.5 类、命名空间和作用域
17.2.6 重载与命名空间
17.2.7 命名空间与模板
17.3 多重继承与虚继承
17.3.1 多重继承
17.3.2 转换与多个基类
17.3.3 多重继承派生类的复制控制
17.3.4 多重继承下的类作用域
17.3.5 虚继承
17.3.6 虚基类的声明
17.3.7 特殊的初始化语义
小结
术语
第18章 特殊工具与技术
18.1 优化内存分配
18.1.1 C++中的内存分配
18.1.2 allocator类
18.1.3 operator new函数和operator delete函数
18.1.4 定位new表达式
18.1.5 显式析构函数的调用
18.1.6 类特定的new和delete
18.1.7 一个内存分配器基类
18.2 运行时类型识别
18.2.1 dynamic_cast操作符
18.2.2 typeid操作符
18.2.3 RTTI的使用
18.2.4 type_info类
18.3 类成员的指针
18.3.1 声明成员指针
18.3.2 使用类成员的指针
18.4 嵌套类
18.4.1 嵌套类的实现
18.4.2 嵌套类作用域中的名字查找
18.5 联合:节省空间的类
18.6 局部类
18.7 固有的不可移植的特征
18.7.1 位域
18.7.2 volatile限定符
18.7.3 链接指示:extern "C"
小结
术语
附录 标准库
索引
C++编程规范
^ 收 起
1.1 编写简单的C++程序
1.2 初窥输入/输出
1.2.1 标准输入与输出对象
1.2.2 一个使用IO库的程序
1.3 关于注释
1.4 控制结构
1.4.1 while语句
1.4.2 for语句
1.4.3 if语句
1.4.4 读入未知数目的输入
1.5 类的简介
1.5.1 Sales_item类
1.5.2 初窥成员函数
1.6 C++程序
小结
术语
第一部分 基本语言
第2章 变量和基本类型
2.1 基本内置类型
2.1.1 整型
2.1.2 浮点型
2.2 字面值常量
2.3 变量
2.3.1 什么是变量
2.3.2 变量名
2.3.3 定义对象
2.3.4 变量初始化规则
2.3.5 声明和定义
2.3.6 名字的作用域
2.3.7 在变量使用处定义变量
2.4 const限定符
2.5 引用
2.6 typedef名字
2.7 枚举
2.8 类类型
2.9 编写自己的头文件
2.9.1 设计自己的头文件
2.9.2 预处理器的简单介绍
小结
术语
第3章 标准库类型
3.1 命名空间的using声明
3.2 标准库string类型
3.2.1 string对象的定义和初始化
3.2.2 String对象的读写
3.2.3 string对象的操作
3.2.4 string对象中字符的处理
3.3 标准库vector类型
3.3.1 vector对象的定义和初始化
3.3.2 vector对象的操作
3.4 迭代器简介
3.5 标准库bitset类型
3.5.1 bitset对象的定义和初始化
3.5.2 bitset对象上的操作
小结
术语
第4章 数组和指针
4.1 数组
4.1.1 数组的定义和初始化
4.1.2 数组操作
4.2 指针的引入
4.2.1 什么是指针
4.2.2 指针的定义和初始化
4.2.3 指针操作
4.2.4 使用指针访问数组元素
4.2.5 指针和const限定符
4.3 C风格字符串
4.3.1 创建动态数组
4.3.2 新旧代码的兼容
4.4 多维数组
小结
术语
第5章 表达式
5.1 算术操作符
5.2 关系操作符和逻辑操作符
5.3 位操作符
5.3.1 bitset对象或整型值的使用
5.3.2 将移位操作符用于IO
5.4 赋值操作符
5.4.1 赋值操作的右结合性
5.4.2 赋值操作具有低优先级
5.4.3 复合赋值操作符
5.5 自增和自减操作符
5.6 箭头操作符
5.7 条件操作符
5.8 sizeof操作符
5.9 逗号操作符
5.10 复合表达式的求值
5.10.1 优先级
5.10.2 结合性
5.10.3 求值顺序
5.11 new和delete表达式
5.12 类型转换
5.12.1 何时发生隐式类型转换
5.12.2 算术转换
5.12.3 其他隐式转换
5.12.4 显式转换
5.12.5 何时需要强制类型转换
5.12.6 命名的强制类型转换
5.12.7 旧式强制类型转换
小结
术语
第6章 语句
6.1 简单语句
6.2 声明语句
6.3 复合语句(块)
6.4 语句作用域
6.5 if语句
6.6 switch语句
6.6.1 使用switch
6.6.2 switch中的控制流
6.6.3 default标号
6.6.4 switch表达式与case标号
6.6.5 switch内部的变量定义
6.7 while语句
6.8 for循环语句
6.8.1 省略for语句头的某些部分
6.8.2 for语句头中的多个定义
6.9 do while语句
6.10 break语句
6.11 continue语句
6.12 goto语句
6.13 try块和异常处理
6.13.1 throw表达式
6.13.2 try块
6.13.3 标准异常
6.14 使用预处理器进行调试
小结
术语
第7章 函数
7.1 函数的定义
7.1.1 函数返回类型
7.1.2 函数形参表
7.2 参数传递
7.2.1 非引用形参
7.2.2 引用形参
7.2.3 vector和其他容器类型的形参
7.2.4 数组形参
7.2.5 传递给函数的数组的处理
7.2.6 main:处理命令行选项
7.2.7 含有可变形参的函数
7.3 return语句
7.3.1 没有返回值的函数
7.3.2 具有返回值的函数
7.3.3 递归
7.4 函数声明
7.5 局部对象
7.5.1 自动对象
7.5.2 静态局部对象
7.6 内联函数
7.7 类的成员函数
7.7.1 定义成员函数的函数体
7.7.2 在类外定义成员函数
7.7.3 编写Sales_item类的构造函数
7.7.4 类代码文件的组织
7.8 重载函数
7.8.1 重载与作用域
7.8.2 函数匹配与实参转换
7.8.3 重载确定的三个步骤
7.8.4 实参类型转换
7.9 指向函数的指针
小结
术语
第8章 标准IO库
8.1 面向对象的标准库
8.2 条件状态
8.3 输出缓冲区的管理
8.4 文件的输入和输出
8.4.1 文件流对象的使用
8.4.2 文件模式
8.4.3 一个打开并检查输入文件的程序
8.5 字符串流
小结
术语
第二部分 容器和算法
第9章 顺序容器
9.1 顺序容器的定义
9.1.1 容器元素的初始化
9.1.2 容器内元素的类型约束
9.2 迭代器和迭代器范围
9.2.1 迭代器范围
9.2.2 使迭代器失效的容器操作
9.3 顺序容器的操作
9.3.1 容器定义的类型别名
9.3.2 begin和end成员
9.3.3 在顺序容器中添加元素
9.3.4 关系操作符
9.3.5 容器大小的操作
9.3.6 访问元素
9.3.7 删除元素
9.3.8 赋值与swap
9.4 vector容器的自增长
9.5 容器的选用
9.6 再谈string类型
9.6.1 构造string对象的其他方法
9.6.2 修改string对象的其他方法
9.6.3 只适用于string类型的操作
9.6.4 string类型的查找操作
9.6.5 string对象的比较
9.7 容器适配器
9.7.1 栈适配器
9.7.2 队列和优先级队列
小结
术语
第10章 关联容器
10.1 引言:pair类型
10.2 关联容器
10.3 map类型
10.3.1 map对象的定义
10.3.2 map定义的类型
10.3.3 给map添加元素
10.3.4 使用下标访问map对象
10.3.5 map::insert的使用
10.3.6 查找并读取map中的元素
10.3.7 从map对象中删除元素
10.3.8 map对象的迭代遍历
10.3.9 “单词转换”map对象
10.4 set类型
10.4.1 set容器的定义和使用
10.4.2 创建“单词排除”集
10.5 multimap和multiset类型
10.5.1 元素的添加和删除
10.5.2 在multimap和multiset中查找元素
10.6 容器的综合应用:文本查询程序
10.6.1 查询程序的设计
10.6.2 TextQuery类
10.6.3 TextQuery类的使用
10.6.4 编写成员函数
小结
术语
第11章 泛型算法
11.1 概述
11.2 初窥算法
11.2.1 只读算法
11.2.2 写容器元素的算法
11.2.3 对容器元素重新排序的算法
11.3 再谈迭代器
11.3.1 插入迭代器
11.3.2 iostream迭代器
11.3.3 反向迭代器
11.3.4 const迭代器
11.3.5 五种迭代器
11.4 泛型算法的结构
11.4.1 算法的形参模式
11.4.2 算法的命名规范
11.5 容器特有的算法
小结
术语
第三部分 类和数据抽象
第12章 类
12.1 类的定义和声明
12.1.1 类定义:扼要重述
12.1.2 数据抽象和封装
12.1.3 关于类定义的更多内容
12.1.4 类声明与类定义
12.1.5 类对象
12.2 隐含的this指针
12.3 类作用域
12.4 构造函数
12.4.1 构造函数初始化式
12.4.2 默认实参与构造函数
12.4.3 默认构造函数
12.4.4 隐式类类型转换
12.4.5 类成员的显式初始化
12.5 友元
12.6 static类成员
12.6.1 static成员函数
12.6.2 static数据成员
小结
术语
第13章 复制控制
13.1 复制构造函数
13.1.1 合成的复制构造函数
13.1.2 定义自己的复制构造函数
13.1.3 禁止复制
13.2 赋值操作符
13.3 析构函数
13.4 消息处理示例
13.5 管理指针成员
13.5.1 定义智能指针类
13.5.2 定义值型类
小结
术语
第14章 重载操作符与转换
14.1 重载操作符的定义
14.2 输入和输出操作符
14.2.1 输出操作符的重载
14.3 算术操作符和关系操作符
14.3.1 相等操作符
14.3.2 关系操作符
14.4 赋值操作符
14.5 下标操作符
14.6 成员访问操作符
14.7 自增操作符和自减操作符
14.8 调用操作符和函数对象
14.8.1 将函数对象用于标准库算法
14.8.2 标准库定义的函数对象
14.8.3 函数对象的函数适配器
14.9 转换与类类型
14.9.1 转换为什么有用
14.9.2 转换操作符
14.9.3 实参匹配和转换
14.9.4 重载确定和类的实参
14.9.5 重载、转换和操作符
小结
术语
第四部分 面向对象编程与泛型编程
第15章 面向对象编程
15.1 面向对象编程:概述
15.2 定义基类和派生类
15.2.1 定义基类
15.2.2 protected成员
15.2.3 派生类
15.2.4 virtual与其他成员函数
15.2.5 公用、私有和受保护的继承
15.2.6 友元关系与继承
15.2.7 继承与静态成员
15.3 转换与继承
15.3.1 派生类到基类的转换
15.3.2 基类到派生类的转换
15.4 构造函数和复制控制
15.4.1 基类构造函数和复制控制
15.4.2 派生类构造函数
15.4.3 复制控制和继承
15.4.4 虚析构函数
15.4.5 构造函数和析构函数中的虚函数
15.5 继承情况下的类作用域
15.5.1 名字查找在编译时发生
15.5.2 名字冲突与继承
15.5.3 作用域与成员函数
15.5.4 虚函数与作用域
15.6 纯虚函数
15.7 容器与继承
15.8 句柄类与继承
15.8.1 指针型句柄
15.8.2 复制未知类型
15.8.3 句柄的使用
15.9 再谈文本查询示例
15.9.1 面向对象的解决方案
15.9.2 值型句柄
15.9.3 Query_base类
15.9.4 Query句柄类
15.9.5 派生类
15.9.6 eval函数
小结
术语
第16章 模板与泛型编程
16.1 模板定义
16.1.1 定义函数模板
16.1.2 定义类模板
16.1.3 模板形参
16.1.4 模板类型形参
16.1.5 非类型模板形参
16.1.6 编写泛型程序
16.2 实例化
16.2.1 模板实参推断
16.2.2 函数模板的显式实参
16.3 模板编译模型
16.4 类模板成员
16.4.1 类模板成员函数
16.4.2 非类型形参的模板实参
16.4.3 类模板中的友元声明
16.4.4 Queue和QueueItem的友元声明
16.4.5 成员模板
16.4.6 完整的Queue类
16.4.7 类模板的static成员
16.5 一个泛型句柄类
16.5.1 定义句柄类
16.5.2 使用句柄
16.6 模板特化
16.6.1 函数模板的特化
16.6.2 类模板的特化
16.6.3 特化成员而不特化类
16.6.4 类模板的部分特化
16.7 重载与函数模板
小结
术语
第五部分 高级主题
第17章 用于大型程序的工具
17.1 异常处理
17.1.1 抛出类类型的异常
17.1.2 栈展开
17.1.3 捕获异常
17.1.4 重新抛出
17.1.5 捕获所有异常的处理代码
17.1.6 函数测试块与构造函数
17.1.7 异常类层次
17.1.8 自动资源释放
17.1.9 auto_ptr类
17.1.10 异常说明
17.1.11 函数指针的异常说明
17.2 命名空间
17.2.1 命名空间的定义
17.2.2 嵌套命名空间
17.2.3 未命名的命名空间
17.2.4 命名空间成员的使用
17.2.5 类、命名空间和作用域
17.2.6 重载与命名空间
17.2.7 命名空间与模板
17.3 多重继承与虚继承
17.3.1 多重继承
17.3.2 转换与多个基类
17.3.3 多重继承派生类的复制控制
17.3.4 多重继承下的类作用域
17.3.5 虚继承
17.3.6 虚基类的声明
17.3.7 特殊的初始化语义
小结
术语
第18章 特殊工具与技术
18.1 优化内存分配
18.1.1 C++中的内存分配
18.1.2 allocator类
18.1.3 operator new函数和operator delete函数
18.1.4 定位new表达式
18.1.5 显式析构函数的调用
18.1.6 类特定的new和delete
18.1.7 一个内存分配器基类
18.2 运行时类型识别
18.2.1 dynamic_cast操作符
18.2.2 typeid操作符
18.2.3 RTTI的使用
18.2.4 type_info类
18.3 类成员的指针
18.3.1 声明成员指针
18.3.2 使用类成员的指针
18.4 嵌套类
18.4.1 嵌套类的实现
18.4.2 嵌套类作用域中的名字查找
18.5 联合:节省空间的类
18.6 局部类
18.7 固有的不可移植的特征
18.7.1 位域
18.7.2 volatile限定符
18.7.3 链接指示:extern "C"
小结
术语
附录 标准库
索引
C++编程规范
^ 收 起
《C++ Primer(第4版)》的三位作者都是C++领域的权威人物。
Stanley B. Lippman 微软公司 Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。他还著有Inside the C++ Object Model。
Josée Lajoie 曾经是IBM加拿大研究中心C/C++编译器开发团队的成员,在ISO C++标准委员会工作了7年,担任过ISO核心语言工作组的主席和C++ Report杂志的专栏作家。
Barbara E. Moo 拥有25年软件经验的独立咨询顾问。在AT&T,她与Stroustrup、Lippman一起管理过复杂的C++开发项目。她和Andrew Koenig合著了Accelerated C++和Ruminations on C++。
^ 收 起
Stanley B. Lippman 微软公司 Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。他还著有Inside the C++ Object Model。
Josée Lajoie 曾经是IBM加拿大研究中心C/C++编译器开发团队的成员,在ISO C++标准委员会工作了7年,担任过ISO核心语言工作组的主席和C++ Report杂志的专栏作家。
Barbara E. Moo 拥有25年软件经验的独立咨询顾问。在AT&T,她与Stroustrup、Lippman一起管理过复杂的C++开发项目。她和Andrew Koenig合著了Accelerated C++和Ruminations on C++。
^ 收 起
C++诞生20年后,因其强大的功能、广泛的适用性和极高的效率,已经成为毋庸置疑的主流编程语言。但是C++语言也不得不面对这样的挑战:其博大精深不仅令初学者望而生畏,而且即使是许多富于经验的老手也很难全面掌握,更有不少C++程序员一直背负着C语言的历史包袱,常常落入各种微妙难解的安全和性能陷阱。如何使现代C++理念深入人心,使C++更加容易学习和使用,已经成为众所瞩目的关键问题。
C++ Primer是久负盛名、无可替代的C++经典著作,已经帮助全球无数程序员学会了C++。第4版完美结合了C++大师Stan B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准的深入理解,更加入了C++先驱Barbara E. Moo在C++教学方面的真知灼见,充分体现了C++语言的新进展和当前的业界优秀实践。
对C++基本概念和技术全面而且专家的阐述,以及对现代C++编程风格的强调,使本书不仅是初学者的优秀C++指南,而且是中高级程序员不可或缺的参考书。
^ 收 起
C++ Primer是久负盛名、无可替代的C++经典著作,已经帮助全球无数程序员学会了C++。第4版完美结合了C++大师Stan B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准的深入理解,更加入了C++先驱Barbara E. Moo在C++教学方面的真知灼见,充分体现了C++语言的新进展和当前的业界优秀实践。
对C++基本概念和技术全面而且专家的阐述,以及对现代C++编程风格的强调,使本书不仅是初学者的优秀C++指南,而且是中高级程序员不可或缺的参考书。
^ 收 起
比价列表
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠