《C++高级进阶教程》在假定读者有一定的C++编程能力的基础上,进一步加强了对一些基本概念(如文字常量与常变量、指针与引用、作用域与生命期、分离编译模式、声明与定义、静态联编与动态联编等)的解释,介绍了一些不太常用的关键字(如volatile、mumble、static cast、dynamic_cast、const_cast、reinterpret_cast等)的用法。同时,介绍了一些C++语言机制的底层实现方案,如引用是怎样实现的、对象上的实例成员函数是怎样被调用的、虚函数表是如何存储以及如何被访问的、new和delete的实现过程是怎样的,等等。另外,还进一步加深了对一些常用的C++语言机制的讲解,如sizeof的用法、typedef的用法、命名空间的定义和使用、多维数组与多重指针、各种操作符的重载等,同时也对一些高级话题,如怎样调试程序、为什么需要设计模式、怎样应对C++语言的复杂性等进行了探讨。
希望通过对这些内容的学习,使读者能够在微观和宏观两个方面进一步拓展对C++语言的认识,从而能够更好地利用它进行程序开发。
第1章 C++基础知识
1.1 关于C++标准
1.2 文字常量和常变量
1.3 const的用法
1.4 const cast的用法
1.5 mutable的用法
1.6 求余运算符
1.7 sizeo]f的用法
1.8 引用与指针常量
1.9 左值的概念
1.10 关于goto语句
1.11 volatile的用法
1.12 typedef的用法
1.13 关于字符串
1.14 什么是链式操作
1.15 关于名字空间
1.16 怎样定义复杂的宏(Macro)
1.17 explicit的用法
第2章 数据类型与程序结构
2.1 C++的数据类型
2.2 C++中的布尔类型
2.3 void的用法
2.4 枚举类型的定义和使用
2.5 结构与联合体
2.6 数据类型转换
2.7 声明与定义的区别
2.8 关于初始化
2.9 作用域和生命期
2.10 关于头文件
2.11 什么是分离编译模式
第3章 函数
3.1 关于main()函数
3.2 函数参数是如何传递的
3.3 实现函数调用时堆栈的变化情况
3.4 关于函数参数的默认值
3.5 如何禁止传值调用
3.6 定义和使用可变参数函数
3.7 关于函数指针
3.8 关于函数重载
3.9 关于操作符重载
3.10 类的成员函数与外部函数(静态函数)的区别
3.11 关于内联函数
3.12 函数的返回值放在哪里
3.13 extem“C”的作用
第4章 类与对象
4.1 类与对象概述
4.2 类定义后面为什么一定要加分号
4.3 关于初始化列表
4.4 对象的生成方式
4.5 关于临时对象
4.6 关于点操作符
4.7 嵌套类与局部类
4.8 对象之间的比较
4.9 类的静态成员的定义和使用
4.10 类的设计与实现规范
4.11 抽象类与纯虚函数
4.12 类对象的内存布局
4.13 为什么说最好将基类的析构函数定义为虚函数
4.14 对象数据成员的初始值
4.15 对象产生和销毁的顺序
4.16 关于拷贝构造函数
第5章 数组与指针
5.1 数组名的意义
5.2 什么是指针
5.3 数组与指针的关系
5.4 数组的初始化
5.5 多维数组与多重指针
5.6 成员数据指针
5.7 关于this指针
5.8 什么是悬挂指针
5.9 什么是解引用
5.10 指针与句柄
第6章 模板与标准模板库
6.1 关于模板参数
6.2 关于模板实例化
6.3 函数声明对函数模板实例化的屏蔽
6.4 将模板声明为友元
6.5 模板与分离编译模式
6.6 关于模板特化
6.7 输入,输出迭代子的用法
6.8 bitset的简单用法
6.9 typename的用法
6.10 什么是仿函数
6.11 什么是引用计数
6.12 什么是ADL
第7章 内存管理
7.1 C++程序的内存布局
7.2 理解new操作的实现过程
7.3 怎样禁止在堆(或栈)上创建对象
7.4 neW和delece的使用规范
7.5 delete和delete[]的区别
7.6 什么是定位放置new
7.7 在函数中创建动态对象
7.8 什么是内存池技术
第8章 继承与多态
8.1 私有成员会被继承吗
8.2 怎样理解构造函数不能被继承
8.3 什么是虚拟继承
8.4 怎样编写一个不能被继承的类
8.5 关于隐藏
8.6 什么是RTTI
8.7 虚调用的几种具体情形
8.8 不要在构造函数或析构函数中调用虚函数
8.9 虚函数可以是私有的吗
8.10 动态联编是怎样实现的
8.11 操作符重载
8.12【】操作符重载
8.13 *操作符重载
8.14 赋值操作符重载
8.15 输入、输出操作符重载
第9章 流类库与输入/输出
9.1 什么是IO流
9.2 IO流类库的优点
9.3 endl是什么
9.4 实现不带缓冲的输入
9.5 提高输入输出操作的稳健性
9.6 为什么要设定locale
9.7 char*和wch_T*之间的转换
9.8 获取文件信息
9.9 管理文件和目录的相关操作
9.10 二进制文件的IO操作
第10章 异常处理
10.1 C++为什么要引入异常处理机制
10.2 抛出异常和传递参数的不同
10.3 抛出和接收异常的顺序
10.4 在构造函数中抛出异常
10.5 用传引用的方式捕捉异常
10.6 在堆栈展开时如何防止内存泄漏
第11章 程序开发环境与实践
11.1 关于开发环境
11.2 在IDE中调试程序时查看输出结果
11.3 使用汇编语言
11.4 怎样调试C++程序
11.5 关于编码规范
11.6 正确使用注释
11.7 静态库与动态库
第12章 编程思想与方法
12.1 C与C++最大的区别
12.2 一个代码重构的例子
12.3 实现代码重用需要考虑的问题
12.4 为什么需要设计模式
12.5 再论C++的复杂性
参考文献