C++进阶心法
作者:吕吕
出版时间: 2019年版
内容简介
本书共10章,其中,第1章介绍了C、C++的基础知识,包括关键字volatile、数组与指针、编译模式等;第2~9章介绍了C++基础与进阶语法,包括数据类型、引用、名字空间、左值与右值,以及内存管理,面向对象的封装、继承与多态,程序异常处理和C++ 0x新太阳城
等内容;第10章给出了业界常见的编码规范与建议。本书不仅介绍了C++的传统语法,而且还融入了C++新的变革内容,旨在帮助读者对C++有一个更加全面的了解,快速地掌握C++编程技巧,并将其应用于工程实践中。
本书既可作为C++编程人员以及相关专业技术人员的参考用书,也可作为高等院校、高职高专院校程序设计相关课程的教学用书。
目录
第1章 C++中的C ………………………………………………………………… 1
1.1 认识volatile ……………………………………………………………………… 1
1.2 数组与指针详解…………………………………………………………………… 6
1.3 认识size_t和指针类型的大小 …………………………………………………… 13
1.4 野指针…………………………………………………………………………… 16
1.5 字符数组的初始化与赋值 ………………………………………………………… 18
1.6 文字常量与常变量 ……………………………………………………………… 20
1.7 数据类型宽度扩展 ……………………………………………………………… 22
1.8 分离编译模式简介 ……………………………………………………………… 24
第2章 C++基础 …………………………………………………………………… 28
2.1 C++发展概述 …………………………………………………………………… 28
2.2 声明与定义的区别 ……………………………………………………………… 29
2.3 认识初始化 ……………………………………………………………………… 32
2.4 结构体的初始化与赋值…………………………………………………………… 37
2.5 认识sizeof ……………………………………………………………………… 39
2.6 认识const ……………………………………………………………………… 49
2.7 struct与union…………………………………………………………………… 57
2.8 多字节字符串与宽字符串的相互转换 …………………………………………… 62
2.9 引用的本质 ……………………………………………………………………… 69
2.10 链式操作 ……………………………………………………………………… 73
2.11 C++的数据类型 ……………………………………………………………… 75
2.12 数据类型转换…………………………………………………………………… 78
2.13 数值类型与string的相互转换…………………………………………………… 91
2.14 临时变量的常量性 ……………………………………………………………… 94
2.15 左值、右值和常引用 …………………………………………………………… 96
2.16 mutable的用法 ………………………………………………………………… 99
2.17 名字空间 ……………………………………………………………………… 101
2.18 作用域与生命周期 …………………………………………………………… 107
2.19 引用计数 ……………………………………………………………………… 112
2.20 I/O流简介 …………………………………………………………………… 119
2.21 头文件的作用和用法…………………………………………………………… __________136
第3章 内存管理…………………………………………………………………… 141
3.1 程序内存布局…………………………………………………………………… 141
3.2 堆与栈的区别…………………………………………………………………… 143
3.3 new的3种面貌 ………………………………………………………………… 155
3.4 delete的3种面貌 ……………………………………………………………… 158
3.5 new与delete的使用规范 ……………………………………………………… 164
3.6 智能指针简介…………………………………………………………………… 168
3.7 STL的四种智能指针 …………………………………………………………… 172
3.8 以智能指针管理内存资源 ……………………………………………………… 188
3.9 内存池介绍与经典内存池的实现 ………………………………………………… 191
第4章 函 数……………………………………………………………………… 199
4.1 关于 main()函数的几点说明 …………………………………………………… 199
4.2 函数参数入栈的思考 …………………………………………………………… 202
4.3 函数调用时堆栈的变化情况 …………………………………………………… 206
4.4 如何禁止函数传值调用 ………………………………………………………… 210
4.5 函数指针简介…………………………………………………………………… 213
4.6 操作符重载 …………………………………………………………………… 215
4.7 函数重载、隐藏、覆盖和重写的区别 ……………………………………………… 224
4.8 inline函数 ……………………………………………………………………… 230
4.9 变参函数 ……………………………………………………………………… 235
第5章 类与对象…………………………………………………………………… 241
5.1 终结类 ………………………………………………………………………… 241
5.2 嵌套类与局部类 ………………………………………………………………… 243
5.3 纯虚函数与抽象类 ……………………………………………………………… 245
5.4 临时对象 ……………………………………………………………………… 249
5.5 构造函数体内赋值与初始化列表的区别 ………………………………………… 252
5.6 对象产生和销毁的顺序 ………………………………………………………… 253
5.7 类成员指针 …………………………………………………………………… 254
5.8 控制对象的创建方式和数量 …………………………………………………… 258
5.9 仿函数 ………………………………………………………………………… 263
5.10 explicit禁止构造函数的隐式调用 ……………………………………………… 267
5.11 类的设计与实现规范…………………………………………………………… 270
第6章 继承与多态………………………………………………………………… 275
6.1 多态的两种形式 ………………………………………………………………… 275
6.2 继承与组合的区别 ……………………………………………………………… 278
6.3 基类私有成员会被继承吗 ……………………………………………………… 282
6.4 虚拟继承与虚基类 ……………………………………………………………… 285
6.5 typeid简介……………………………………………………………………… 289
6.6 虚调用及其调用的具体形式 …………………………………………………… 293
6.7 动态联编实现原理分析 ………………………………………………………… __________297
6.8 接口继承与实现继承的区别和选择 ……………………………………………… 306
6.9 获取类成员虚函数地址 ………………………………………………………… 307
6.10 构造函数与析构函数调用虚函数的注意事项 …………………………………… 309
第7章 模板与泛型编程…………………………………………………………… 311
7.1 typename的双重含义 …………………………………………………………… 311
7.2 模板实例化与调用 ……………………………………………………………… 313
7.3 模板特化与模板偏特化 ………………………………………………………… 316
7.4 函数声明对函数模板实例化的屏蔽 ……………………………………………… 323
7.5 模板与分离编译模式 …………………………………………………………… 324
7.6 endl的本质是什么 ……………………………………………………………… 326
7.7 将模板声明为友元 ……………………………………………………………… 330
7.8 认识容器的迭代器 ……………………………………………………………… 334
7.9 模板元编程简介 ………………………………………………………………… 339
第8章 C++0x初探 ……………………………………………………………… 348
8.1 新关键字 ……………………………………………………………………… 348
8.2 基于范围的for循环 …………………………………………………………… 361
8.3 就地初始化与列表初始化 ……………………………………………………… 365
8.4 Lambda表达式 ………………………………………………………………… 367
8.5 移动语义与右值引用 …………………………………………………………… 373
8.6 POD类型 ……………………………………………………………………… 383
8.7 委托构造函数…………………………………………………………………… 388
8.8 继承构造函数…………………………………………………………………… 390
8.9 Unicode支持 …………………………………………………………………… 394
8.10 原生字符串 …………………………………………………………………… 401
8.11 通用属性 ……………………………………………………………………… 404
8.12 变参模板 ……………………………………………………………………… 407
8.13 函数模板的默认模板参数 ……………………………………………………… 417
8.14 折叠表达式 …………………………………………………………………… 419
8.15 强类型枚举简介 ……………………………………………………………… 422
8.16 显示类型转换 ………………………………………………………………… 425
第9章 异常处理…………………………………………………………………… 427
9.1 为什么要引入异常处理机制 …………………………………………………… 427
9.2 抛出异常与传递参数的区别 …………………………………………………… 430
9.3 抛出和接收异常的顺序 ………………………………………………………… 438
9.4 构造函数抛出异常的注意事项…………………………………………………… 442
9.5 析构函数禁止抛出异常 ………………………………………………………… 445
9.6 使用引用捕获异常 ……………………………………………………………… 448
9.7 栈展开如何防止内存泄漏 ……………………………………………………… 451
9.8 异常处理的开销 ………………………………………………………………… 453
第10章 编码规范与建议 ………………………………………………………… 456
10.1 命名方式建议 ………………………………………………………………… 456
10.2 代码调试建议 ………………………………………………………………… 459
10.3 头文件使用规范建议…………………………………………………………… 463
10.4 函数使用规范建议 …………………………………………………………… 469
10.5 作用域使用规范建议…………………………………………………………… ̷472
10.6 类使用规范建议 ……………………………………………………………… 476
10.7 编码格式建议 ………………………………………………………………… 485
10.8 注释风格建议 ………………………………………………………………… 494
10.9 特性使用建议 ………………………………………………………………… 502
参考文献……………………………………………………………………………… 513__