书籍详情

C++程序设计实践教程(新国标微课版)

C++程序设计实践教程(新国标微课版)

作者:马光志

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

出版时间:2023-07-01

ISBN:9787568094825

定价:¥59.00

购买这本书可以去
内容简介
  本书致力于从理论结合实战的角度介绍C 的语法、标准库以及开发环境,结合知乎网站等出现的数千个C 学习与开发问题,将面向对象的建模技术同简单的数学建模相结合,从而同时培养同学分析问题、解决问题的能力。本书的例题及习题注重趣味性,并同时与要介绍的C 概念巧妙结合,从而较好阐述了C 语法概念的使用背景,使得同学们在遇到新的类似的问题时,能够恰当的利用C 的相关概念解决问题。本教材采用的实验环境为Microsoft Visual Studio Qt插件,该环境开发和发布的程序可以在windows、linux、android、ios、QNX、Embedded Linux等不同操作系统平台及桌面和移动等不同环境运行,利用数学建模 面向对象建模 图形用户界面三层模式。
作者简介
  马光志,湖北钟祥人,博士,副教授。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语言,数据结构等。
目录

第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

猜您喜欢

读书导航