《C++进阶心法》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:吕吕,王琥编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2019
  • ISBN:9787512422407
  • 页数:513 页
图书介绍:本书主要介绍C++进阶所需知识,涵盖编程所需的计算机基础知识、C++基本概念(比如指针与引用、作用域与生命周期、分离编译模式、静态联编与动态联编)、C++语言底层实现机制、C++0x新标准引入的特性、C++编程规范建议,从计算机相关知识到C++编程语言基础知识,再到编程规范建议指导,结合具体实例,由浅入深地进行介绍,使读者对C++编程有进一步的理解与收获。本书适合广大在校学生、IT从业人员及编程爱好者使用。

第1章 C+中的C 1

1.1 认识volatile 1

1.2 数组与指针详解 6

1.2.1 数组 6

1.2.2 指针 8

1.2.3 数组与指针的关系 10

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.5.1 sizeof的基本语法 39

2.5.2 sizeof计算基本类型与表达式 40

2.5.3 sizeof计算指针变量 41

2.5.4 sizeof计算数组 42

2.5.5 sizeof计算结构体 43

2.5.6 sizeof计算共用体 47

2.5.7 sizeof计算类 48

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.12.1 隐式数据类型转换 79

2.12.2 显式数据类型转换 79

2.12.3 C+++中的新式类型转换 80

2.12.4 手动重载相关类型转换操作符 87

2.12.5 小结 90

2.13 数值类型与string的相互转换 91

2.13.1 数值类型转换为string 91

2.13.2 string转换为数值类型 92

2.14 临时变量的常量性 94

2.15 左值、右值和常引用 96

2.16 mutable的用法 99

2.17 名字空间 101

2.18 作用域与生命周期 107

2.19 引用计数 112

2.19.1 引用计数的作用 112

2.19.2 等值对象具有多份复制的情况 112

2.19.3 以引用计数实现String 113

2.19.4 小结 119

2.20 I/O流简介 119

2.20.1 I/O全缓冲、行缓冲和无缓冲 119

2.20.2 I/O格式控制 122

2.20.3 cin详细用法 128

2.21 头文件的作用和用法 136

第3章 内存管理 141

3.1 程序内存布局 141

3.2 堆与栈的区别 143

3.2.1 程序内存分区中的堆与栈 144

3.2.2 数据结构中的堆与栈 146

3.3 new的3种面貌 155

3.4 delete的3种面貌 158

3.5 new与delete的使用规范 164

3.6 智能指针简介 168

3.7 STL的四种智能指针 172

3.7.1 unique_ptr 172

3.7.2 auto_ptr 173

3.7.3 shared_ptr 177

3.7.4 weak_ptr 182

3.7.5 如何选择智能指针 186

3.8 以智能指针管理内存资源 188

3.9 内存池介绍与经典内存池的实现 191

3.9.1 默认内存管理函数的不足 191

3.9.2 内存池简介 192

3.9.3 经典的内存池技术 193

第4章 函数 199

4.1 关于main()函数的几点说明 199

4.2 函数参数入栈方式与调用约定 202

4.3 函数调用时栈的变化情况 206

4.4 如何禁止函数传值调用 210

4.5 函数指针简介 213

4.6 操作符重载 215

4.6.1 输入/输出操作符重载 215

4.6.2 赋值操作符重载 218

4.6.3 解引用操作符重载 221

4.6.4 成员函数或友元函数 223

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.12.1 简介 407

8.12.2 可变模板参数的展开 408

8.12.3 可变参数模板的应用 414

8.12.4 小结 416

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.3.1 背景 463

10.3.2 头文件使用的相关规范 463

10.3.3 小结 468

10.4 函数使用规范建议 469

10.4.1 内联函数的使用规范 469

10.4.2 函数的相关规范 470

10.5 作用域使用规范建议 472

10.6 类使用规范建议 476

10.7 编码格式建议 485

10.8 注释风格建议 494

10.9 特性使用建议 502

参考文献 513