| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
目
录第1章
由C迁移到C++
概述
C与C++的比较
编译器如何识别C++程序
预处理器如何识别环境
新的注释风格
永远不要假定(隐式地使用int类型)
main()的默认返回值
声明与定义的区别
函数声明中的形参名称
函数定义中的形参名称
所有的函数在调用前必须先声明
空圆括号的含义
函数参数的默认值
初始化与赋值的区别
放置变量声明的地方
for循环内的变量声明
标记名成为类型名
C++与C中枚举类型的区别
初始化全局变量
数组初始化
布尔类型
void
*指针
使用0,而不是宏NULL
关键字const
131.24.1
所有的常量必须初始化
131.24.2
将常量值的参数传递给函数的含义
141.24.3
函数返回值为常量的含义
141.24.4
const如何影响指针
141.24.5
C++与C中字符数组的区别
151.24.6
如何支持char
const*类型的数组
161.24.7
C以及C++处理const方式的区别
161.24.8
使用const而不是#define
171.24.9
const
变量的连接
新的类型强制转换风格
181.25.1
类型强制转换以及转换的区别
181.25.2
类型强制转换的一般格式
191.25.3
static_cast
191.25.4
reinterpret_cast
201.25.5
const_cast
201.25.6
您不会犯错
C以及C++关键字
21第2章
命名空间
概述
存在的问题
如何创建命名空间
作用域分解运算符
如何访问命名空间的成员
252.5.1
直接访问命名空间的成员
252.5.2
using声明--
访问命名空间成员的另一种方法
262.5.3
using
指令--访问命名空间成员的另一种方法
小心避免不明确的情况
无名的命名空间
命名空间的别名
Koenig
查找规则
30第3章
输入/输出基础
概述
使用新函数的理由
头文件--
命名约定
iostream头文件
cout对象
333.5.1
插入运算符
343.5.2
显式地限定cout对象
343.5.3
使用using声明来访问cout对象
353.5.4
使用using指令来访问cout对象
关于正确使用std命名空间的建议
了解运算符的优先级
输出格式
cin对象
检查文件是否结束
39第4章
引用变量
概述
存在的问题
如何创建引用变量
所有的引用都必须初始化
引用的作用
使用const限定引用
何时不需要使用引用
没有“常量引用”
创建对指针的引用
创建对数组的引用
由函数返回引用
49第5章
动态内存分配
概述
如何为单个对象分配动态内存
如何初始化基本类型
空圆括号的含义
如何释放单个对象的空闲空间
如何为对象的数组分配空闲空间
如何释放对象数组的空闲空间
保持平衡
如何使用new和delete在空闲存储区中存储字符串
如何分配和删除多维数组
命名该空间
两个程序输出示例
58第6章
类
概述
C中的结构
616.2.1
全局函数
626.2.2
C存在的问题
初识封装
636.3.1
修订后的Circle抽象
636.3.2
必须支持常量对象
结构与类
类的用途
类的组件
如何编写类定义
656.7.1
类声明与类定义
666.7.2
关于输入/输出类
数据隐藏的原则
访问限定符
716.9.1
private关键字
726.9.2
public关键字
736.9.3
protected
关键字
736.9.4
选择编码风格
模块化并实现隐藏
746.10.1
如何模块化
756.10.2
用户的任务
776.10.3
本节小结
如何通过实例来访问类成员
内联函数
796.12.1
内联函数的含义
806.12.2
内联函数与宏的对比
806.12.3
使得内联函数对编译器有效
806.12.4
放置内联函数的地方
816.12.5
内联函数的连接
816.12.6
如何编写全局成员内联函数
816.12.7
如何编写类成员内联函数
826.12.8
隐式内联和显式内联的比较
mutable
关键字
如何显示类的内容
类中的枚举类型
876.15.1
使用枚举的原因
886.15.2
私有枚举
886.15.3
公有枚举
906.15.4
“Enum
Hack”的作用
91第7章
构造函数和析构函数
概述
构造函数的定义
947.2.1
语法规则
957.2.2
何时不调用构造函数
957.2.3
编译器提供的默认构造函数
967.2.4
默认的构造函数:普遍定义
977.2.5
初始化常量对象
987.2.6
构造函数重载
987.2.7
不能直接调用构造函数
析构函数的定义
1017.3.1
编译器提供的析构函数
1017.3.2
析构函数的作用
1017.3.3
编写您自己的析构函数
1027.3.4
语法规则
如何实例化类并调用默认构造函数
如何实例化类并向构造函数传递参数
如何阻止使用默认构造函数的实例化
隐式类型转换
复制构造函数
1097.8.1
默认复制构造函数
1107.8.2
复制构造函数的语法
1117.8.3
复制构造函数的数量
1117.8.4
浅复制与深复制
1117.8.5
编写您自己的复制构造函数
1127.8.6
如何阻止对象复制
函数风格的强制转换
初始化与赋值
基/成员初始化列表
1187.11.1
默认初始化
1207.11.2
强制使用基/成员初始化列表
1207.11.3
另一种初始化调用的情况
关于指针
形参名与类成员名
非静态数据成员的初始化顺序
基本类型的数组作为非静态数据成员
用户自定义类型数组作为非静态数据成员
如何创建用户自定义实例的数组
如何声明常量数据成员数组
如何在空闲存储区中创建用户自定义类型
如何在空闲存储区中创建用户自定义类型的数组
调用new时的语法
129第8章
类的其他特征
概述
this指针
1348.2.1
解引用this指针来复制调用对象
1368.2.2
解引用this指针以允许链接函数
静态类数据成员
1398.3.1
在类的定义中初始化静态类数据成员
1428.3.2
静态成员函数
1438.3.3
用于生成随机数的类
1458.3.4
Die类
1458.3.5
Dice类
类的大小
友元函数
1528.5.1
类如何授权一个函数作为它的友元函数
1528.5.2
成员函数和非成员函数
1538.5.3
使用非成员非友元函数替代友元函数
1558.5.4
在命名空间中声明类的友元函数
友元类
类的封装
运算符转换函数
1698.8.1
用途
1698.8.2
语法
类成员指针
1718.9.1
全局函数指针
1718.9.2
指向非静态类成员函数的指针
1728.9.3
使用指向非静态成员函数的指针调用函数
1728.9.4
指向静态类成员函数的指针
173第9章
异常处理
概述
如何抛出异常
如何捕获异常
catch代码块的匹配处理
异常处理的一个简单示例
释放堆栈
如果调用new失败怎么办
如何防止new抛出异常
异常的传播
如何处理指向空闲空间的指针
不能销毁还没有创建的对象
重新抛出对象
从子对象成员中捕获抛出的异常
function-try-blocks
子对象成员和指针的混合使用
对象的局部结构
编写异常-安全代码
1909.17.1
堆栈中的简单对象
1909.17.2
堆栈中的对象数组
1919.17.3
空闲存储区中的简单对象
1919.17.4
再论空闲存储区中的简单对象
1929.17.5
空闲存储区中的对象数组
1939.17.6
再论空闲存储区中的对象数组
析构函数和异常处理
异常规范
出错条件
1979.20.1
意外错误
1989.20.2
终止错误
编译器如何对待异常规范
为类定义operator
new()函数
199第10章
函数重载
概述
几个关于函数重载的示例
忽略返回类型
const限定参数按值传递
const限定参数按指针传递
const限定参数按引用传递
可变成员函数和常量成员函数
重载决议
根据指针类型重载
名称重整
20710.10.1
如何避免名称重整
20810.10.2
类型-安全连接
运算符函数重载
21010.11.1
运算符优先级表
21110.11.2
重载运算符的命名
21310.11.3
默认参数
21310.11.4
C++自带的运算符
21310.11.5
不能改变优先级
21410.11.6
不能改变“Narity”
21410.11.7
不能改变结合性
21410.11.8
成员函数与非成员函数
21410.11.9
至少支持一个类实例
21510.11.10
中缀表示法和函数表示法
21510.11.11
二元成员函数和隐式类型转换
21610.11.12
多次重载或者允许隐式类型转换
21810.11.13
运算符的重载
21910.11.14
赋值运算符
22010.11.15
函数调用运算符
22310.11.16
下标运算符
22510.11.17
间接成员运算符
22610.11.18
复合赋值运算符
22910.11.19
自增运算符和自减运算符
23110.11.20
重载逗号运算符
23310.11.21
重载逻辑与和逻辑或运算符
23310.11.22
重载插入运算符
23410.11.23
运算符小结
235第11章
继承
概述
内存中的派生类实例
使用继承创建is-a关系
如何定义派生类
再论结构和类
关键字protected
访问特权
基类“存取器”函数
修改继承访问
函数隐藏
派生类成员函数如何调用基类成员函数
管理函数
24911.12.1
如何编写管理函数
25011.12.2
派生类到基类的标准转换
25411.12.3
隐藏非成员函数
25511.12.4
不要对数组进行向上类型转换
多态性
多态性和虚函数
26211.14.1
友好的程序代码和不友好的程序代码
26311.14.2
重写虚函数
26311.14.3
虚析构函数
26511.14.4
从基类的构造函数中调用虚函数
抽象基类
26611.15.1
再论关于贷款的示例
26711.15.2
关于虚函数的异常规范
里氏代换原则
多重继承
27011.17.1
虚基类
27311.17.2
初始化虚基类
274第12章&