第1章 快速步入C++的世界 001 1.1 C++语言概述 001 1.1.1 C语言与C++语言的关系 001 1.1.2 C++语言的特点 001 1.1.3 C++的发展历程 002 1.2 搭建C++开发环境 002 1.2.1 安装Visual Studio 2019 002 1.2.2 启动Visual Studio 2019 004 1.2.3 使用Visual Studio 2019建立C++程序 005 1.3 C++的编译过程 009 1.4 新手疑难问题解答 010 1.5 实战训练 010 第2章 C++语言基础 011 2.1 C++基本语法 011 2.1.1 C++中的基本概念 011 2.1.2 C++中的分号和空格 011 2.1.3 C++中的语句块 012 2.1.4 C++中的标识符 012 2.1.5 C++中的关键字 013 2.2 C++程序的结构 013 2.2.1 第一个C++程序 013 2.2.2 #include指令 014 2.2.3 iostream标准库 015 2.2.4 命名空间 016 2.2.5 函数main() 016 2.2.6 关于注释 017 2.3 C++数据类型 017 2.3.1 整型数据类型 017 2.3.2 浮点型数据类型 019 2.3.3 字符型数据类型 019 2.3.4 布尔型数据类型 021 2.3.5 自定义数据类型 021 2.4 数据的输入与输出 022 2.4.1 认识控制台 022 2.4.2 C++语言中的流 023 2.4.3 认识cout与cin语句 024 2.4.4 流输出格式的控制 026 2.5 新手疑难问题解答 029 2.6 实战训练 030 第3章 使用常量和变量 031 3.1 使用常量 031 3.1.1 认识常量 031 3.1.2 整型常量 032 3.1.3 实型常量 032 3.1.4 字符常量 033 3.1.5 字符串常量 034 3.1.6 其他常量 035 3.2 自定义常量 035 3.2.1 使用#define预处理器 036 3.2.2 使用const关键字 037 3.3 使用变量 038 3.3.1 认识变量 038 3.3.2 变量的声明 039 3.3.3 变量的赋值 040 3.3.4 变量的作用域 041 3.3.5 整型变量 044 3.3.6 实型变量 045 3.3.7 字符型变量 046 3.3.8 布尔型变量 047 3.4 新手疑难问题解答 047 3.5 实战训练 048 第4章 使用运算符和表达式 049 4.1 认识运算符 049 4.1.1 算术运算符 049 4.1.2 自增、自减运算符 050 4.1.3 关系运算符 051 4.1.4 逻辑运算符 052 4.1.5 赋值运算符 054 4.1.6 位运算符 055 4.1.7 杂项运算符 056 4.1.8 逗号运算符 057 4.2 优先级与结合性 058 4.2.1 运算符优先级 058 4.2.2 运算符结合性 059 4.3 使用表达式 061 4.3.1 算术表达式 061 4.3.2 赋值表达式 063 4.3.3 关系表达式 064 4.3.4 逻辑表达式 065 4.3.5 位运算表达式 066 4.3.6 条件表达式 067 4.3.7 逗号表达式 068 4.4 表达式中的类型转换 068 4.4.1 自动转换 068 4.4.2 强制转换 070 4.5 新手疑难问题解答 071 4.6 实战训练 071 第5章 程序流程控制结构 072 5.1 顺序结构 072 5.2 选择结构 073 5.2.1 if语句 073 5.2.2 if…else语句 074 5.2.3 嵌套if…else语句 075 5.2.4 switch语句 078 5.2.5 嵌套switch语句 080 5.3 循环结构 081 5.3.1 循环结构类型 081 5.3.2 循环控制语句 091 5.4 新手疑难问题解答 096 5.5 实战训练 097 第6章 函数与函数调用 098 6.1 函数的概述 098 6.1.1 函数的概念 098 6.1.2 函数的定义 098 6.1.3 函数的声明 100 6.2 函数参数及返回值 101 6.2.1 空函数 101 6.2.2 形参与实参 102 6.2.3 函数的默认参数 102 6.2.4 参数的传递方式 103 6.2.5 声明返回值类型 105 6.2.6 函数的返回值 107 6.3 函数的调用 109 6.3.1 函数调用的形式 109 6.3.2 函数调用的方式 109 6.3.3 函数的传值调用 111 6.3.4 函数的嵌套调用 111 6.3.5 函数的递归调用 113 6.4 变量的作用域 116 6.4.1 自动变量 116 6.4.2 静态局部变量 116 6.4.3 外部变量 117 6.4.4 寄存器变量 118 6.5 内联函数 118 6.6 新手疑难问题解答 119 6.7 实战训练 120 第7章 数值数组与字符数组 121 7.1 数组概述 121 7.1.1 认识数组 121 7.1.2 数组的特点 122 7.2 一维数组 122 7.2.1 定义一维数组 122 7.2.2 初始化一维数组 123 7.2.3 一维数组的应用 125 7.3 二维数组 127 7.3.1 定义二维数组 127 7.3.2 初始化二维数组 128 7.3.3 二维数组的应用 129 7.4 多维数组 131 7.5 字符数组 131 7.5.1 字符数组的定义 131 7.5.2 初始化字符数组 132 7.5.3 字符数组的应用 133 7.5.4 字符数组的输出 134 7.5.5 字符数组的输入 135 7.6 新手疑难问题解答 137 7.7 实战训练 138 第8章 C++中的指针和引用 139 8.1 指针与变量 139 8.1.1 指针变量的定义 139 8.1.2 指针变量的初始化 140 8.1.3 指针变量的引用 142 8.1.4 指针变量的运算 143 8.2 指针与函数 145 8.2.1 指针传送到函数中 145 8.2.2 返回值为指针的函数 146 8.2.3 指向函数的指针 147 8.3 指针与数组 148 8.3.1 数组元素的指针 149 8.3.2 通过指针引用数组元素 149 8.3.3 指向数组的指针变量作为函数参数 152 8.3.4 通过指针对多维数组进行引用 156 8.4 指针与字符串 160 8.4.1 指向字符串的指针变量 160 8.4.2 使用字符指针作为函数参数 161 8.5 指针数组和多重指针 163 8.5.1 指针数组 163 8.5.2 指向指针的指针 164 8.6 C++中的引用 166 8.6.1 认识C++中的引用 166 8.6.2 通过引用传递函数参数 166 8.6.3 把引用作为返回值 167 8.7 新手疑难问题解答 168 8.8 实战训练 168 第9章 结构体、共用体和枚举 170 9.1 结构体概述 170 9.1.1 结构体的概念 170 9.1.2 结构体类型的定义 171 9.1.3 结构体变量的定义 172 9.1.4 结构体变量的初始化 173 9.1.5 结构体变量成员的引用 174 9.2 结构体数组 175 9.2.1 结构体数组的定义 175 9.2.2 结构体数组的初始化 175 9.2.3 结构体数组的引用 176 9.3 结构体与函数 177 9.3.1 结构体变量作为函数参数 177 9.3.2 结构体变量的成员作为函数参数 178 9.3.3 结构体变量作为函数返回值 179 9.4 结构体与指针 180 9.4.1 指向结构体变量的指针 180 9.4.2 指向结构体数组的指针 182 9.4.3 结构体指针作为函数参数 183 9.5 共用体数据类型 184 9.5.1 共用体类型的声明 184 9.5.2 共用体变量的定义 184 9.5.3 共用体变量的初始化 186 9.5.4 共用体变量的引用 186 9.6 枚举数据类型 187 9.6.1 枚举类型的定义 187 9.6.2 枚举类型变量的定义 188 9.7 新手疑难问题解答 189 9.8 实战训练 190 第10章 C++中的类和对象 192 10.1 C++类 192 10.1.1 类的概述与定义 192 10.1.2 类的实现方法 193 10.1.3 类对象的声明 195 10.1.4 类对象的引用 195 10.2 类访问修饰符 198 10.2.1 公有成员 199 10.2.2 私有成员 200 10.2.3 保护成员 201 10.3 构造函数 201 10.3.1 构造函数的定义 202 10.3.2 带参数的构造函数 203 10.3.3 使用参数初始化表 204 10.3.4 构造函数的重载 205 10.3.5 构造函数的默认参数 206 10.3.6 复制构造函数 207 10.4 析构函数 209 10.4.1 认识析构函数 209 10.4.2 析构函数的调用 210 10.5 C++类成员 211 10.5.1 内联成员函数 211 10.5.2 静态类成员 212 10.5.3 常量类成员 214 10.5.4 隐式/显式的this指针 216 10.6 类对象数组 218 10.6.1 类对象数组的调用 218 10.6.2 类对象数组和默认构造函数 219 10.6.3 类对象数组和析构函数 220 10.7 友元 221 10.7.1 友元函数 221 10.7.2 友元类 222 10.8 新手疑难问题解答 223 10.9 实战训练 224 第11章 C++中的继承与派生 225 11.1 C++中的继承 225 11.1.1 什么是继承 225 11.1.2 基类与派生类 226 11.1.3 基类中的构造函数 228 11.1.4 继承中的构造顺序 231 11.2 C++继承方式 233 11.2.1 公有继承 233 11.2.2 私有继承 234 11.2.3 保护继承 235 11.3 派生类存取基类成员 237 11.3.1 私有成员的存取 237 11.3.2 继承与静态成员 238 11.4 多重继承 239 11.4.1 声明多继承 240 11.4.2 多继承下的构造函数 240 11.5 新手疑难问题解答 242 11.6 实战训练 242 第12章 C++中的多态与重载 244 12.1 多态概述 244 12.1.1 认识多态行为 244 12.1.2 实现多态性 244 12.2 虚函数与虚函数表 246 12.2.1 虚函数的作用 246 12.2.2 动态绑定和静态绑定 248 12.2.3 定义纯虚函数 249 12.2.4 认识虚函数表 251 12.3 抽象类与多重继承 252 12.3.1 抽象类的作用 253 12.3.2 抽象类的多重继承 253 12.4 认识运算符的重载 254 12.4.1 什么是运算符重载 255 12.4.2 运算符重载的形式 255 12.4.3 可重载的运算符 258 12.5 常用运算符的重载 259 12.5.1 “<”运算符重载 259 12.5.2 “+”运算符重载 260 12.5.3 “=”赋值运算符重载 261 12.5.4 前置运算符重载 263 12.5.5 后置运算符重载 264 12.5.6 插入运算符重载 265 12.5.7 折取运算符重载 266 12.6 新手疑难问题解答 268 12.7 实战训练 268 第13章 C++中模板的应用 269 13.1 函数模板 269 13.1.1 函数模板的用途 269 13.1.2 函数模板的定义 270 13.1.3 函数模板的调用 271 13.1.4 函数模板的重载 273 13.2 类模板 274 13.2.1 类模板的定义 274 13.2.2 类模板的实例化 277 13.2.3 类模板的使用 277 13.3 模板的特化 279 13.3.1 函数模板的特化 280 13.3.2 类模板的特化 281 13.4 新手疑难问题解答 282 13.5 实战训练 283 第14章 容器、算法与迭代器 284 14.1 认识容器 284 14.2 顺序容器 285 14.2.1 向量类模板 285 14.2.2 链表类模板 290 14.2.3 双端队列类模板 296 14.3 关联容器 297 14.3.1 映射类模板 298 14.3.2 集合类模板 301 14.3.3 多重集合类模板 302 14.4 容器适配器 303 14.4.1 栈类 303 14.4.2 队列类 304 14.4.3 优先级队列类 305 14.5 C++中的算法 307 14.5.1 数据编辑算法 307 14.5.2 查找算法 308 14.5.3 比较算法 310 14.5.4 排序相关算法 311 14.6 C++中的迭代器 312 14.6.1 迭代器的分类 312 14.6.2 迭代器的使用 314 14.7 新手疑难问题解答 315 14.8 实战训练 315 第15章 C++程序的异常处理 316 15.1 认识异常处理 316 15.1.1 认识异常处理机制 316 15.1.2 认识标准异常 317 15.1.3 异常处理语句块 317 15.2 异常处理的简单应用 318 15.2.1 抛出异常 318 15.2.2 重新抛出异常 320 15.2.3 捕获所有异常 321 15.2.4 异常的匹配 321 15.3 异常处理的高级应用 324 15.3.1 自定义异常类 324 15.3.2 捕获多个异常 325 15.3.3 异常的重新捕获 327 15.3.4 构造函数的异常处理 328 15.4 新手疑难问题解答 329 15.5 实战训练 330 第16章 C++中文件的操作 331 16.1 文件I/O操作 331 16.1.1 输入文件流 331 16.1.2 输出文件流 332 16.1.3 输入/输出文件流 333 16.2 文件的打开与关闭 334 16.2.1 文件的打开 334 16.2.2 文件的关闭 336 16.3 文本文件的处理 337 16.3.1 将变量写入文本文件 337 16.3.2 将变量写入文件尾部 337 16.3.3 从文本文件中读取变量 338 16.4 使用函数处理文本文件 339 16.4.1 使用函数get()读取文本文件 339 16.4.2 使用函数getline()读取文本文件 340 16.4.3 使用函数put()将记录写入文本文件 340 16.5 新手疑难问题解答 341 16.6 实战训练 341