![]()
内容推荐 本书以简明扼要的语言、配合丰富的实例,针对初学者从很基础的变量、表达式、数组、指针、引用和函数等,到面向对象的类和对象、继承与派生、虚函数与多态,从泛型编程的函数模板和类模板到移动语义、头等函数(函数指针、函数对象、Lambda表达式),从C ++ 标准库的输入输出流库、容器、迭代器、算法、智能指针等工具到异常处理和RAII等,由浅入深地对近期新的C++17标准语法进行了系统的讲解。对一些关键的语法概念如函数、类与对象、派生类等内容,提供了游戏编程、信息管理、数据结构、机器学习、人工智能等学科领域的一些经典的、实际问题的实战演练,以加强读者将语法知识用于解决各种实际问题和进行实际编程能力的训练,让读者领悟和体会C++语言的灵活运用。 本书描述精炼、简单易懂,并有丰富的实战案例,既适合作为编程初学者的学习用书,也适合有编程基础的开发人员迅速学习和掌握现代C++语言。 目录 章 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习题 0章模板 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实战: 强化学习QLearning求解最佳路径 10.3.1强化学习 10.3.2QLearning 10.3.3QLearning的C++实现 10.4习题 1章移动语义 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习题 2章函数指针、函数对象、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习题 3章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习题 4章异常处理 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习题 参考文献 |