欢迎访问学兔兔,学习、交流 分享 !

返回首页 |

C++17从入门到精通 董洪伟编著 2019年版

收藏
  • 大小:63.45 MB
  • 语言:中文版
  • 格式: PDF文档
  • 阅读软件: Adobe Reader
资源简介
C++17从入门到精通
作者:董洪伟编著
出版时间: 2019年版
内容简介
本书以简明扼要的语言、配合丰富的实例,针对初学者从*基础的变量、表达式、数组、指针、引用和函数等,到面向对象的类和对象、继承与派生、虚函数与多态,从泛型编程的函数模板和类模板到移动语义、头等函数(函数指针、函数对象、Lambda表达式),从C 标准库的输入输出流库、容器、迭代器、算法、智能指针等工具到异常处理和RAII等,由浅入深地对*的C 17标准语法进行了系统的讲解。对一些关键的语法概念如函数、类与对象、派生类等内容,提供了游戏编程、信息管理、数据结构、机器学习、人工智能等学科领域的一些经典的、实际问题的实战演练,以加强读者将语法知识用于解决各种实际问题和进行实际编程能力的训练,让读者领悟和体会C 语言的灵活运用。 本书描述精炼、简单易懂,并有丰富的实战案例,既适合作为编程初学者的学习用书,也适合有编程基础的开发人员迅速学习和掌握现代C 语言。
目  录
目录

第1章 C 介绍

1.1程序与编程语言

1.1.1计算机是什么

1.1.2计算机编程

1.1.3编译器、解释器和C 语言

1.1.4C 语言介绍

1.1.5C 程序开发步骤

1.2C 程序结构

1.2.1简单的C 程序

1.2.2函数

1.2.3语句

1.2.4程序注释

1.2.5hello world程序

1.2.6标准输入输出库和cout

1.2.7名字空间

1.2.8字符串和字符

1.2.9运算符和运算数

1.2.10宏定义#define

1.2.11变量

1.2.12标准输入流对象cin

1.2.13用户定义类型

1.3数和字符的表示

1.3.1数的表示

1.3.2字符的表示

1.4编译、执行C 程序

1.5习题

第2章变量和类型

2.1变量

2.1.1变量的定义及初始化

2.1.2auto

2.1.3typeid运算符

2.1.4decltype

2.1.5赋值运算符=

2.1.6const

2.1.7标识符、关键字、文字量

2.2数据类型

2.2.1基本类型

2.2.2sizeof运算符

2.2.3文字量

2.2.4格式化输出

2.2.5类型转换

2.2.6类型别名

2.2.7枚举

2.3局部变量与全局变量、变量的作用域与生命期

2.3.1程序块、局部变量和全局变量

2.3.2作用域和生命期

2.4习题

第3章运算符与表达式

3.1运算符

3.1.1运算符的分类

3.1.2优先级和结合性

3.2表达式

3.3算术运算符

3.3.1算术运算符需要注意的几个问题

3.3.2自增 和自减--

3.3.3数学计算函数库cmath

3.4位运算

3.5赋值运算符

3.6关系运算符

3.7逻辑运算符

3.8特殊运算符

3.8.1条件运算符

3.8.2逗号运算符

3.9习题

第4章语句

4.1简单语句、复合语句和控制语句

4.1.1简单语句

4.1.2复合语句

4.1.3控制语句

4.2条件语句

4.2.1if语句

4.2.2switch语句

4.2.3if/switch语句中的初始化语句

4.3循环语句

4.3.1while语句

4.3.2for语句

4.4跳转语句

4.5实战: 控制台游戏——Pong游戏

4.5.1Pong游戏

4.5.2初始化

4.5.3绘制场景

4.5.4让球动起来

4.5.5事件处理: 用挡板击打球

4.6习题

第5章复合类型: 数组、指针和引用

5.1引用

5.2指针

5.2.1指针类型

5.2.2指针的其他运算

5.2.3void*无类型指针

5.2.4指针的指针

5.2.5指针的引用

5.2.6引用和指针的比较

5.3数组

5.3.1数组和下标运算符

5.3.2复杂的数组声明

5.3.3C风格字符串

5.3.4指针访问数组

5.3.5range for

5.3.6多维数组

5.4动态内存

5.4.1程序堆栈区

5.4.2new和delete运算符

5.4.3动态内存表示多维数组

5.5const修饰符

5.5.1const和指针

5.5.2const对象的引用

5.6实战:查找、排序、短路径

5.6.1二分查找

5.6.2排序: 冒泡、选择

5.6.3Floyd短路径算法

5.7习题

第6章函数

6.1函数是命名的程序块

6.1.1公约数

6.1.2函数的定义

6.2静态变量

6.3函数的形参

6.3.1参数传递

6.3.2默认参数

6.3.3数组作为形参

6.3.4const与形参

6.3.5可变数目的形参

6.4递归函数: 调用自身的函数

6.4.1递归和递归函数

6.4.2实战: 二分查找的递归实现

6.4.3实战: 汉诺塔问题

6.4.4实战: 快速排序算法

6.4.5实战: 迷宫问题

6.5函数重载与重载解析

6.5.1函数重载

6.5.2重载解析

6.5.3const对象的引用或指针

6.6inline函数

6.7constexpr

6.8实战: 二维字符图形库ChGL

6.8.1如何在字符终端上绘图

6.8.2字符图形库ChGL

6.8.3曲线绘制API函数plot()

6.9实战: 基于ChGL的控制台游戏

6.9.1游戏程序的框架

6.9.2用ChGL和函数重写Pong游戏

6.10实战: 机器学习线性回归

6.10.1机器学习

6.10.2假设函数、回归和分类

6.10.3线性回归

6.10.4多变量函数的小值、正规方程

6.10.5梯度下降法

6.10.6梯度下降法求解线性回归问题: 模拟数据

6.10.7批梯度下降法

6.10.8房屋价格预测

6.10.9样本特征的规范化

6.10.10预测房屋价格

6.11习题

第7章类和对象

7.1面向对象编程

7.2类

7.2.1定义一个类

7.2.2定义类的对象(变量)

7.2.3成员函数

7.2.4this指针

7.2.5类对象的大小

7.3构造函数

7.3.1创建类对象的构造函数

7.3.2初始化成员列表

7.3.3拷贝构造函数

7.3.4赋值运算符: operator=

7.3.5隐式类型转换、explicit

7.3.6委托构造函数

7.3.7delete

7.3.8类对象数组

7.3.9类体外定义成员函数和构造函数

7.4访问控制和接口

7.5const对象、const成员函数、mutable成员变量

7.5.1const对象和const成员函数

7.5.2重载const

7.5.3mutable成员变量

7.6析构函数

7.7静态成员

7.7.1非静态成员变量和静态成员变量

7.7.2静态常量

7.7.3静态成员函数

7.7.4类自身类型的静态成员变量

7.8友元

7.9内联成员函数

7.10重新定义拷贝构造函数和赋值运算符函数

7.11实战: 线性表及应用

7.11.1线性表

7.11.2线性表的顺序实现: 顺序表

7.11.3线性表的链式实现: 链表

7.11.4实现一个图书管理的程序

7.12实战: 面向对象游戏——基于链表的贪吃蛇游戏

7.12.1面向对象游戏引擎

7.12.2贪吃蛇游戏

7.13习题

第8章运算符重载

8.1运算符重载的2种方式

8.2赋值运算符=

8.3下标运算符[]

8.4输入输出运算符

8.5比较运算符

8.6函数调用运算符()

8.7类型转换运算符

8.8自增和自减运算符

8.9可以重载的运算符

8.10实战: 矩阵

8.11习题

第9章派生类

9.1继承与派生

9.1.1继承关系和派生类

9.1.2is a和belong to

9.1.3派生类的定义

9.1.4成员的隐藏

9.1.5继承方式

9.1.6基类指针和派生类指针

9.2派生类的构造函数和析构函数

9.3多继承和虚基类

9.3.1多继承

9.3.2虚基类

9.4多态

9.4.1对象的切割和类型转换

9.4.2基类指针(引用)和向下类型转换

9.4.3虚函数和多态

9.4.4虚函数的一些语法规则

9.4.5基类指针数组

9.4.6虚析构函数

9.4.7纯虚函数和抽象类

9.5实战: 仿“雷电战机”游戏

9.5.1精灵

9.5.2游戏引擎GameEngine

9.5.3碰撞检测和精灵的销毁

9.5.4让敌方战机运动和发射子弹

9.6习题

第10章模板

10.1函数模板

10.1.1函数模板的定义与实例化

10.1.2模板参数推断

10.1.3模板专门化

10.1.4函数模板和重载

10.1.5模板的返回类型推断

10.1.6非类型模板参数

10.1.7模板模板参数

10.1.8模板参数的默认值

10.1.9可变模板参数

10.1.10constexpr if

10.2类模板

10.2.1标准库类模板vector

10.2.2类模板Vector

10.2.3定义类模板的成员函数

10.2.4类模板的模板参数推断

10.2.5类模板的专门化

10.2.6类模板的友元

10.2.7类模板std∷initializer_list

10.3实战: 强化学习QLearning求解路径

10.3.1强化学习

10.3.2QLearning

10.3.3QLearning的C 实现

10.4习题

第11章移动语义

11.1左值和右值

11.1.1左值和右值概述

11.1.2左值和右值的转换

11.1.3左值引用和右值引用

11.2移动

11.2.1复制和移动

11.2.2移动构造函数

11.2.3移动赋值运算符函数

11.2.4std∷move

11.2.5右值引用

11.2.6push_back()

11.3习题

第12章函数指针、函数对象、Lambda表达式

12.1函数指针

12.1.1函数类型和函数指针类型

12.1.2给函数指针类型起别名

12.1.3函数指针作为其他函数的参数

12.2函数对象

12.3Lambda表达式

12.3.1定义和使用Lambda表达式

12.3.2捕获子句

12.3.3返回类型

12.3.4Lambda表达式的实质

12.4std∷function

12.5std∷bind

12.6习题

第13章C 标准库介绍

13.1输入输出流库

13.1.1C 的I/O流库

13.1.2格式化输入输出

13.1.3非格式化输入输出

13.1.4文件位置

13.1.5流状态

13.1.6管理输出缓冲区

13.1.7文件输入输出

13.1.8字符串流

13.2容器

13.2.1标准容器

13.2.2序列容器

13.2.3容器适配器

13.2.4关联容器

13.3迭代器

13.3.1迭代器及其分类

13.3.2迭代器适配器

13.3.3数组、字符串和迭代器

13.4算法

13.4.1自定义通用算法

13.4.2策略参数

13.4.3标准库的常用算法

13.5智能指针

13.5.1raw指针和智能指针

13.5.2unique_ptr

13.5.3shared_ptr

13.5.4weak_ptr

13.6字符串

13.6.1字符: cctype、cwctype

13.6.2C风格字符串

13.6.3C 的字符串

13.7习题

第14章异常处理

14.1错误和异常处理

14.1.1错误的分类

14.1.2传统的错误处理方法

14.1.3C 的异常处理

14.2throw、try、catch

14.2.1throw

14.2.2try、catch

14.2.3异常类型的匹配

14.3堆栈展开和RAII

14.3.1堆栈展开

14.3.2资源获取即初始化

14.4习题

参考文献
下载地址