目 录 第1章 绪论 1 1.1 计算机程序设计语言 1 1.1.1 程序设计语言 1 1.1.2 程序设计范型 2 1.1.3 面向对象程序设计 4 1.2 C++程序设计语言概述 5 1.2.1 C++语言发展简史 5 1.2.2 C++语言的特点 6 1.3 Visual C++ 2017编程工具简介 7 1.3.1 C++程序生成过程 7 1.3.2 .NET 框架与 Visual C++ 2017 8 1.3.3 Visual C++ 2017集成开发 环境简介 9 1.3.4 创建控制台应用程序项目 10 1.3.5 创建Windows窗体应用 程序项目 12 1.3.6 调试与跟踪程序 13 1.4 本章小结 14 1.5 习题 15 第2章 数据类型与基本运算 16 2.1 数据类型 16 2.1.1 基本数据类型 17 2.1.2 构造数据类型 19 2.2 变量与常量 20 2.2.1 词法及其规则 20 2.2.2 变量 21 2.2.3 常量 23 2.2.4 auto类型说明符 26 2.2.5 decltype类型指示符 27 2.3 运算与表达式 27 2.3.1 运算类型和表达式 28 2.3.2 算术运算及算术表达式 29 2.3.3 赋值运算及赋值表达式 30 2.3.4 关系运算及关系表达式 32 2.3.5 逻辑运算及逻辑表达式 32 2.3.6 位运算及位表达式 33 2.3.7 其他运算及其表达式 35 2.4 数组 37 2.4.1 一维数组 37 2.4.2 多维数组 39 2.4.3 字符数组 41 2.5 指针与引用 43 2.5.1 指针 43 2.5.2 多级指针 45 2.5.3 指针运算 46 2.5.4 指针与数组 48 2.5.5 引用 51 2.6 枚举 54 2.6.1 无作用域限定枚举 54 2.6.2 强类型枚举 55 2.7 标准库类型string 56 2.8 标准库类型vector 57 2.9 标准库类型map 58 2.10 结构体与联合 59 2.10.1 结构体 60 2.10.2 联合 61 2.11 案例实训 63 2.12 本章小结 64 2.13 习题 65 第3章 基本控制结构与语句 67 3.1 算法与基本控制结构 67 3.1.1 算法与流程图 67 3.1.2 三种基本控制结构 69 3.1.3 语句 69 3.2 选择型结构 70 3.2.1 if…else语句 70 3.2.2 switch语句 72 3.3 循环型结构 74 3.3.1 传统for语句 74 3.3.2 范围for语句 76 3.3.3 while语句 77 3.3.4 do…while语句 79 3.3.5 跳转语句 81 3.4 异常处理 85 3.4.1 throw语句 85 3.4.2 try语句 86 3.5 输入与输出 88 3.5.1 控制台输入输出 88 3.5.2 文件输入输出 89 3.6 案例实训 92 3.7 本章小结 93 3.8 习题 94 第4章 函数 97 4.1 函数定义与调用 97 4.2 函数参数传递 100 4.2.1 按值传递 100 4.2.2 地址传递 101 4.2.3 引用传递 102 4.2.4 const形参 103 4.2.5 数组形参 105 4.3 函数返回类型与函数重载 106 4.3.1 返回类型与return语句 106 4.3.2 尾随返回类型 109 4.3.3 返回数组指针 110 4.3.4 函数重载 111 4.4 内联函数与常量表达式函数 113 4.4.1 inline函数 113 4.4.2 constexpr函数 114 4.5 递归函数 115 4.6 函数指针 118 4.7 Lambda函数 124 4.8 内存模型、作用域和生存期 125 4.8.1 C++程序内存模型 126 4.8.2 全局变量和局部变量 126 4.8.3 作用域和可见性 127 4.8.4 存储类型和生存期 128 4.9 案例实训 130 4.10 本章小结 131 4.11 习题 131 第5章 类与对象 136 5.1 面向对象编程:封装 136 5.2 类与对象 137 5.2.1 类的定义 137 5.2.2 对象的创建 139 5.2.3 this指针与对象 141 5.3 构造函数与析构函数 143 5.3.1 构造函数 143 5.3.2 委托构造函数 146 5.3.3 析构函数 147 5.4 类中成员对象 149 5.4.1 成员对象的构造与析构 149 5.4.2 组合应用示例 152 5.5 类中静态成员 155 5.5.1 静态数据成员 155 5.5.2 静态成员函数 158 5.6 类的友元 160 5.6.1 友元函数 160 5.6.2 友元类 162 5.7 运算符重载函数 164 5.7.1 运算符重载成员函数 165 5.7.2 运算符重载友元函数 168 5.7.3 特殊运算符的重载 171 5.7.4 流插入与提取运算符重载 178 5.8 多文件结构与编译预处理 180 5.8.1 多文件结构 180 5.8.2 编译预处理 181 5.9 案例实训 185 5.10 本章小结 187 5.11 习题 188 第6章 动态内存 192 6.1 动态内存的分配与释放 192 6.1.1 new和delete运算符 192 6.1.2 深复制与浅复制 196 6.2 智能指针 198 6.2.1 unique_ptr 199 6.2.2 shared_ptr和weak_ptr 200 6.3 移动构造与移动赋值 202 6.3.1 移动语义 202 6.3.2 std::move函数 204 6.3.3 移动构造函数 204 6.3.4 移动赋值运算符 206 6.4 合成的成员函数 207 6.4.1 用=default显式合成 208 6.4.2 用=delete阻止拷贝 208 6.5 动态内存应用示例 209 6.5.1 Array类的设计 209 6.5.2 String类的设计 212 6.6 案例实训 216 6.7 本章小结 217 6.8 习题 217 第7章 类的继承 219 7.1 面向对象编程:继承 219 7.2 派生类 220 7.2.1 派生类的定义 221 7.2.2 继承方式与访问控制 223 7.2.3 成员函数的同名覆盖与 隐藏 225 7.2.4 派生类与基类的赋值兼容 227 7.3 派生类的构造与析构 230 7.4 多重继承与虚基类 234 7.4.1 多重继承 234 7.4.2 虚基类 236 7.5 案例实训 240 7.6 本章小结 241 7.7 习题 242 第8章 多态性 245 8.1 面向对象编程:多态 245 8.2 虚函数与动态绑定 246 8.2.1 虚函数的定义与用法 246 8.2.2 override和final修饰符 249 8.2.3 动态绑定的实现方法 250 8.2.4 虚析构函数 252 8.3 纯虚函数与抽象类 254 8.4 案例实训 261 8.5 本章小结 262 8.6 习题 262 第9章 模板与泛型编程 266 9.1 函数模板 266 9.1.1 函数模板的定义与实例化 266 9.1.2 函数模板与重载 269 9.1.3 完美转发 270 9.2 类模板 272 9.2.1 类模板的定义与实例化 272 9.2.2 类模板与继承 277 9.2.3 类模板与友元 279 9.2.4 别名模板 280 9.2.5 变量模板 281 9.2.6 嵌套类模板 282 9.2.7 模板特例化 283 9.3 可变参数模板 284 9.3.1 可变参数函数模板 284 9.3.2 可变参数类模板 286 9.4 案例实训 287 9.5 本章小结 288 9.6 习题 288 第10章 标准模板库 291 10.1 STL组件概述 291 10.2 容器 293 10.2.1 顺序容器 293 10.2.2 关联容器 295 10.2.3 无序容器 297 10.3 迭代器 298 10.3.1 迭代器分类 299 10.3.2 迭代器适配器 302 10.4 算法与函数对象 304 10.4.1 泛型算法 304 10.4.2 函数对象 309 10.5 案例实训 312 10.6 本章小结 313 10.7 习题 314 第11章 输入输出流与文件 315 11.1 流概述 315 11.2 流的格式控制 317 11.2.1 流格式状态字 317 11.2.2 流格式操纵符 320 11.2.3 流格式控制成员函数 322 11.3 输入流与输出流 323 11.3.1 输入流 323 11.3.2 输出流 325 11.3.3 流与对象的输入输出 326 11.4 流的错误状态 328 11.5 文件的输入与输出 329 11.5.1 文件的基本操作 330 11.5.2 文本文件的输入与输出 333 11.5.3 二进制文件的输入与输出 335 11.6 字符串流 339 11.7 案例实训 340 11.8 本章小结 341 11.9 习题 341 第12章 异常与命名空间 344 12.1 异常处理 344 12.1.1 异常概述 344 12.1.2 抛出异常与堆栈展开 345 12.1.3 构造函数、析构函数和 异常 347 12.1.4 noexcept说明符 351 12.1.5 标准库中异常类 352 12.2 命名空间 357 12.2.1 命名空间的定义 357 12.2.2 命名空间与作用域 359 12.3 案例实训 360 12.4 本章小结 360 12.5 习题 361 第13章 C++/CLI程序设计基础 364 13.1 概述 364 13.2 C++/CLI的基本数据类型 366 13.3 C++/CLI的句柄、装箱与拆箱 368 13.4 C++/CLI的字符串与数组 371 13.4.1 C++/CLI中的String类 371 13.4.2 C++/CLI中的数组 373 13.5 C++/CLI中的类与属性 376 13.6 C++/CLI中的多态与接口 378 13.7 C++/CLI中的模板与泛型 382 13.8 C++/CLI中的异常 384 13.9 C++/CLI中的枚举 386 13.10 .NET中的委托与事件 387 13.10.1 委托 387 13.10.2 事件 390 13.11 案例实训 392 13.12 本章小结 392 13.13 习题 393 第14章 WinForm应用程序设计 395 14.1 鼠标坐标的显示 395 14.2 倒计时器 396 14.3 简易计算器 399 14.4 循环队列原理演示 405 14.5 随机运动的小球 410 14.6 案例实训 413 14.7 本章小结 414 14.8 习题 415 第15章 项目实践 416 15.1 系统概述 416 15.2 功能设计 416 15.3 系统设计 417 15.3.1 数据表设计 417 15.3.2 界面设计 417 15.4 模块设计与代码实现 418 15.4.1 实体类的实现代码 418 15.4.2 数据类的实现代码 418 15.4.3 菜单类的实现代码 418 15.4.4 应用程序类的实现代码 419 15.5 本章小结 419 15.6 习题 419 附录A ASCII码字符表 420 附录B IEEE浮点数表示 422