注册 登录 进入教材巡展 进入在线书城
#

出版时间:2023-06

出版社:华中科技大学出版社

获奖信息:校级规划教材  

以下为《C++程序设计实践教程(新国标微课版)》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 华中科技大学出版社
  • 9787568094825
  • 1-1
  • 505769
  • 49241789-4
  • 16开
  • 2023-06
  • 432
  • 计算机
  • 本科
作者简介
马光志,湖北钟祥人,博士,副教授。1985在大连理工大学获计算机软件学士学位,1988年在华中科技大学获计算机软件硕士学位,2009年获华中科技大学计算机软件博士学位,1997、2011年先后在美国North Illinois University、Kennesaw State University培训及访问。主要研究方向为人工智能、图像处理、深度学习,曾发表国际期刊SCI论文25篇、国际会议发表论文10篇,国内期刊会议论文30篇,出版教材5部,获得授权发明专利1项,获得6项软件著作版权。主持与参加了近30个研究开发项目,包括国家自然科学基金1项,省自然科学基金1项,国家863及973共4项,国家重大研发计划1项,中英国际合作及中加国际合作项目各1项,上海联影横向合作项目4项,以及与医学图像、医院信息、卫生监管等相关的多个研究开发项目8项。曾参加C语言至8086汇编语言编译器的研究与开发项目。获得中国医院科技创新奖1次,湖北省科技进步二等奖2次、三等奖1次。讲授的课程主要包括数据开采与知识发现、面向对象程序设计、C++程序设计、Java程序设计、汇编语言程序设计,Lisp语言,Prolog语言,数据结构等。
查看全部
内容简介
C++能支持任何应用开发,包括基于WebAssembly的网页开发。本书从实战需求出发,简要介绍了汇编语言和C语言,通过栈或队列等易于理解的案例,由浅入深地介绍C++的全部概念,内容覆盖每三年更新一次的多版C++国际标准。针对知乎网站各种人员提出的数千问题,仔细地组织教学内容和案例,注重核心概念和基础理论的介绍,以使读者能理论联系实际解决新问题。
为了提高读者的系统建模及程序设计能力,本书配备了丰富生动的实例、习题、实验及课设题目。课设题目同时涉及简单的数学建模、面向对象建模及图形用户界面三层模式开发。通过视频微课等丰富的教学资源和手段,完整地展示了安装配置、界面设计等开发过程,以使读者能从C++初学者者逐步成长为技能成熟的程序员,并具备软件系统分析师的视野和素养。
目录
第1章 C++引论 1
1.1 计算机的体系结构 1
1.1.1 计算机系统的体系结构 1
1.1.2 数据与机器指令的解析 3
1.2 进制及其转换和运算 5
1.2.1 计算机采用二进制的原因 5
1.2.2 C++的常用进制及其运算 6
1.3 80x86系列汇编语言 8
1.3.1 汇编语言及C++编译简介 8
1.3.2 汇编指令及C++程序编译 9
1.4 C++的发展历史及特点 13
1.4.1 C++的发展历史 14
1.4.2 C++的特点 14
1.5 语法图与程序流程图 15
1.5.1 C++的语法图 15
1.5.2 程序流程图 17
1.6 编译环境的安装与使用 18
1.6.1 编译过程及编译环境 19
1.6.2 Microsoft Visual Studio 2019的安装 19
练习题 26
第2章 类型、常量及变量 27
2.1 C++的单词 27
2.1.1 C++的字符集 27
2.1.2 C++的关键字 28
2.2 预定义类型及值域和常量 29
2.2.1 预定义类型及其数值转换 29
2.2.2 强制类型转换及类型值域 31
2.2.3 预定义类型及相关常量 33
2.3 变量及其类型解析 37
2.3.1 变量的声明和定义 38
2.3.2 指针及其类型理解 41
2.3.3 有址引用变量 49
2.3.4 无址引用变量 55
2.3.5 元素、下标及数组 57
2.4 运算符及表达式 60
2.4.1 位运算与等号运算 60
2.4.2 指针运算及其结合方向 61
2.4.3 关系运算及结果转换 62
2.5 结构与联合 64
2.5.1 结构体 64
2.5.2 联合体 66
练习题 68
第3章 语句、函数及程序设计 70
3.1 C++的语句 70
3.1.1 简单语句 70
3.1.2 转移语句 71
3.1.3 分支语句及分支预选 73
3.1.4 循环语句 76
3.1.5 break和continue语句 80
3.1.6 asm和static_assert语句 81
3.2 C++的函数 82
3.2.1 函数声明与定义 82
3.2.2 头文件与声明 84
3.2.3 函数的参数声明 86
3.2.4 函数重载 88
3.2.5 inline、constexpr及consteval函数 90
3.2.6 线程互斥及线程本地变量 94
3.3 作用域 95
3.3.1 全局作用域与文件作用域 95
3.3.2 局部作用域与块作用域 97
3.4 生命期 99
3.5 程序设计实例 101
3.5.1 栈编程实例 101
3.5.2 队列编程实例 103
3.5.3 有限自动机编程实例 105
练习题 108
第4章 C++的类 110
4.1 类的声明及定义 110
4.1.1 面向对象的基本概念 110
4.1.2 类及对象定义的实例 111
4.2 成员访问权限及突破方法 115
4.2.1 成员的访问权限 116
4.2.2 突破成员的访问权限 117
4.3 内联、匿名类及位域 118
4.3.1 函数成员的内联 118
4.3.2 无对象的静态匿名联合 119
4.3.3 局部类及位域成员 121
4.4 new和delete运算符 122
4.4.1 简单类型及单个对象内存管理 122
4.4.2 复杂类型及对象数组内存管理 124
4.5 隐含参数this 126
4.6 对象的构造与析构 128
4.6.1 构造函数及对象初始化 128
4.6.2 成员默认值及构造与析构 130
4.7 类及对象的内存布局 132
练习题 135
第5章 成员及成员指针 137
5.1 实例成员指针 137
5.1.1 实例成员指针的用法 137
5.1.2 实例成员指针的限制 139
5.2 const、volatile和mutable 140
5.2.1 const和volatile的用法 140
5.2.2 mutable实例数据成员 144
5.3 静态数据成员 146
5.3.1 静态数据成员的用法 146
5.3.2 静态数据成员的限制 149
5.4 静态函数成员 151
5.4.1 静态函数成员的访问 151
5.4.2 静态函数成员的限制 152
5.5 静态成员指针 153
5.5.1 静态成员指针的用法 153
5.5.2 多种指针的混合用法 154
5.6 联合的成员指针 155
练习题 157
第6章 继承与构造 160
6.1 单继承类 160
6.2 继承方式 162
6.2.1 继承后成员的访问权限 162
6.2.2 访问权限的修改 165
6.3 成员访问及其指针 166
6.4 构造与析构 168
6.4.1 对象构造的执行顺序 168
6.4.2 new、delete引起的构造与析构 169
6.5 父类与子类 170
6.5.1 父类及其函数调用 170
6.5.2 友元和派生类函数中的父子类关系 172
6.6 派生类的内存布局 174
练习题 175
第7章 可访问性 178
7.1 作用域运算符 178
7.1.1 面向对象的作用域 178
7.1.2 面向过程的作用域 181
7.2 名字空间 182
7.2.1 名字空间的基本用法 182
7.2.2 使用名字空间的注意事项 185
7.3 成员友元 187
7.3.1 成员友元的一般用法 188
7.3.2 互为依赖的类的友元 189
7.4 普通友元及其注意事项 190
7.4.1 普通友元的一般用法 191
7.4.2 友元使用的注意事项 193
7.5 覆盖与隐藏 195
7.5.1 覆盖与隐藏的用法 195
7.5.2 使用using避免数据成员覆盖 196
7.6 同体与异体 198
练习题 199
第8章 多态与虚函数 203
8.1 虚函数 203
8.1.1 虚函数的声明及定义 203
8.1.2 虚函数的重载及内联 205
8.2 虚析构函数 209
8.3 类的引用 210
8.3.1 类的引用变量及其析构 211
8.3.2 类的引用参数及其析构 213
8.4 抽象类 217
8.4.1 抽象类的定义及用法 217
8.4.2 抽象类的应用实例 218
8.5 虚函数友元与晚期绑定 221
8.5.1 虚函数作为友元 221
8.5.2 虚函数的晚期绑定 222
8.6 有虚函数时的内存布局 223
练习题 225
第9章 多继承与虚基类 227
9.1 多继承类 227
9.1.1 无多继承的替代方案 227
9.1.2 多继承存在的问题 228
9.2 虚基类 230
9.3 派生类成员 232
9.3.1 无虚基类时的成员同名 232
9.3.2 有虚基类时的成员同名 233
9.4 单重及多重继承的构造与析构 234
9.4.1 单继承的构造与析构 234
9.4.2 多继承的构造与析构 236
9.5 多继承类的内存布局 237
9.5.1 无虚基类时的内存布局 237
9.5.2 有虚基类时的内存布局 239
练习题 242
第10章 异常与断言 245
10.1 异常处理 245
10.1.1 抛出与捕获 245
10.1.2 异常的传播 247
10.2 捕获顺序 248
10.3 函数的异常接口 249
10.3.1 异常接口声明 250
10.3.2 noexcept接口 251
10.4 异常类型 253
10.5 异常对象的析构 254
10.5.1 通过对象指针析构 254
10.5.2 未完成对象的析构 256
10.6 断言 257
练习题 259
第11章 运算符重载 260
11.1 运算符概述 260
11.1.1 结果为左值的运算符 260
11.1.2 运算符重载的分类 261
11.1.3 成员重载与非成员重载 262
11.2 运算符参数 263
11.2.1 自增与自减的重载 264
11.2.2 重载运算符-> 265
11.2.3 单双目运算符的重载 266
11.3 赋值与调用 268
11.3.1 赋值运算符的重载 268
11.3.2 构造函数的重载 271
11.3.3 安全的编程方法 272
11.4 类型转换与内存管理 273
11.4.1 单个显式参数构造函数 274
11.4.2 强制类型转换重载函数 275
11.4.3 重载new和delete 276
11.5 重载<=>、[]及文本运算符 278
11.5.1 重载<=>运算符 278
11.5.2 重载[]运算符 280
11.5.3 重载文本运算符 281
11.6 运算符重载实例 282
11.6.1 符号表运算的重载实例 282
11.6.2 栈及队列运算重载实例 284
练习题 289
第12章 类型解析、转换与推导 295
12.1 隐式与显式类型转换 295
12.1.1 简单类型的隐式转换 295
12.1.2 简单类型的显式转换 297
12.1.3 简单类型的转换结果 298
12.2 cast系列类型转换 302
12.2.1 static_cast——静态转换 302
12.2.2 const_cast——只读转换 303
12.2.3 dynamic_cast——动态转换 306
12.2.4 reinterpret_cast——重释转换 310
12.3 类型转换实例 312
12.3.1 typeid获取类型标识 313
12.3.2 explicit要求显式调用 314
12.3.3 栈的类型转换实例 316
12.4 自动类型推导 318
12.4.1 auto的一般用法 319
12.4.2 auto用于函数、数组、列表和结构 320
12.4.3 表达式类型的提取decltype 322
12.5 Lambda表达式 324
12.5.1 Lambda表达式的声明 324
12.5.2 Lambda表达式的参数 327
12.5.3 准函数Lambda表达式 331
练习题 334
第13章 模板、模块、概念、协程 335
13.1 变量模板及其实例 335
13.1.1 变量模板的定义 335
13.1.2 变量模板的实例化 336
13.2 函数模板 337
13.2.1 函数模板的定义 337
13.2.2 成员函数模板的定义 339
13.2.3 可变类型参数及折叠表达式 340
13.3 函数模板实例化 343
13.3.1 函数模板强制实例化 343
13.3.2 函数模板实例特化 344
13.3.3 涉及指针的模板实例化 345
13.4 类模板及模板别名 346
13.4.1 类模板及模板别名定义 346
13.4.2 派生类类模板的定义 347
13.4.3 多类型参数的类模板 348
13.4.4 省略参数的类模板 349
13.4.5 类模板的友元及Lambda表达式 351
13.5 类模板的实例化及特化 354
13.5.1 类模板的实例化 354
13.5.2 类模板实例特化 354
13.5.3 类模板的部分特化 357
13.5.4 实例化与类型推导 359
13.5.5 类模板及实例成员指针 360
13.5.6 模板分隔符的二义性 361
13.5.7 类模板与泛型 362
13.6 模块、概念、协程 366
13.6.1 模块及分区 366
13.6.2 概念及约束 368
13.6.3 协程及编译配置 371
13.6.4 智能指针及内存回收 376
练习题 379
第14章 流及标准类库 381
14.1 流类概述 381
14.2 输出流 382
14.3 输入流 385
14.4 文件流 386
14.5 串流处理 388
14.6 函数模板format 389
14.7 标准类库的容器 390
14.8 类型特征type_traits 393
练习题 396
第15章 面向对象开发实例 397
15.1 面向对象设计概述 397
15.2 对象的静态模型 398
15.3 面向对象的分析 400
15.4 对象的设计与实现 401
15.5 骰子游戏模型设计实例 403
15.5.1 问题描述 403
15.5.2 对象模型 404
15.5.3 对象设计 405
15.6 游戏模型程序设计 408
练习题 414
参考文献 422