新概念C++程序设计大学教程
全新正版 假一赔十 可开发票
¥
33.73
7.5折
¥
45
全新
仅1件
作者张基温 编著
出版社清华大学出版社
ISBN9787302408390
出版时间2016-04
装帧平装
开本16开
定价45元
货号1201290053
上书时间2024-12-19
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
张基温,知名学者,研究和教学领域涉及计算机科学与技术、信息管理、信息经济学、电子政务与电子商务、服务科学,发表论文一百余篇,已出版著作92种;先后担任名古屋大学访问学者,山西财经大学、江南大学、华东政法大学、福建工程学院、晋城学院、广西职业技术学院等多所大学的专职、客座或兼职教授,北京大学博雅方略城市发展与信息化研究中心研究员,南京大学出版社总编顾问,太原高新技术区IT研究院实验室主任。山西省紧缺人才专家委员会副主任等职,中国信息经济学会常务理事,全国高等院校计算机基础教育研究会常务理事兼课程建设委员会副主任,中国计算机学会教育专业委员会委员,教育部NIT考试委员会委员,江苏省计算机基础教学指导委员会委员,山西省新世纪专家学者协会副会长;为清华大学出版社、电子工业出版社、中国水利水电出版社、南京大学出版社等出版社主编了信息管理与信息系统专业、计算机实验与实践、大学生信息素养等多个系列教材。在面向过程程序设计教学领域,从20世纪80年代初就开始进行有关研究和改革。尝试将软件工程方法和算法思想引入程序设计,推行算法分析和测试设计相结合的程序设计方法,倡导“以思维训练为核心。程序测试与程序设计并行”的程序设计教育理念,推行“前期重在逻辑思维和方法训练、语法够用就行;后期进行语法细节补充”的程序设计课程教学方法。他主笔并与他人联合署名的《C语言程序设计教程》是重量十一五规划教材。并于2007年被评为重量精品教材。
目录
第1篇 C++面向对象启步
第1单元 职员类 3
1.1 从具体对象到职员类 3
1.1.1 具体职员对象的分析与描述 3
1.1.2 Employee类的声明 4
1.1.3 C++保留字、标识符与名字空间 5
1.1.4 数据类型 7
1.2 表达式 10
1.2.1 字面值 10
1.2.2 数据实体 10
1.2.3 含有操作符的表达式及其基本求值规则 12
1.3 类的成员函数 13
1.3.1 函数的关键环节 13
1.3.2 对象的生成与构造函数 15
1.3.3 标准输出流out与printEmployee() 函数 17
1.3.4 析构函数 18
1.3.5 一个完整的Employee类 18
1.4 主函数 19
1.4.1 主函数及其结构 19
1.4.2 测试Employee类的主函数 19
1.5 构造函数重载 20
1.5.1 函数重载的概念 20
1.5.2 不同参数数目的构造函数重载 21
1.5.3 复制构造函数 21
1.6 程序编译 24
1.6.1 编译预处理 24
1.6.2 编译与连接 26
1.6.3 多文件程序的编译 26
1.7 知识链接 28
1.7.1 指针=基类型+地址 28
1.7.2 指向对象的指针与this 30
1.7.3 引用 32
习题1 33
第2单元 简单桌面计算器 38
2.1 简单桌面计算器建模 38
2.1.1 简单桌面计算器分析 38
2.1.2 Calculator类的声明 38
2.2 calculate( )函数的实现 39
2.2.1 用if-else结构实现成员函数calculate( ) 39
2.2.2 用switch结构实现calculate( ) 41
2.2.3 if-else判断结构与switch判断结构比较 42
2.2.4 Culculator类测试 43
2.2.5 发现运行异常的程序测试 44
2.3 C++异常处理 45
2.3.1 程序错误 45
2.3.2 C++异常处理机制 47
2.3.3 在同一个函数中抛掷并处理异常 48
2.3.4 异常的抛掷与检测处理分在不同函数中 50
2.3.5 抛掷多个异常 51
2.3.6 用类作为异常类型 52
2.3.7 捕获任何异常 55
2.4 简单桌面计算器的改进 56
2.4.1 使用浮点数计算的Calculator类 56
2.4.2 从键盘输入算式 58
2.5 实现多算式计算 60
2.5.1 用一个数据成员存储中间结果 60
2.5.2 用一个静态局部变量存储中间结果 62
2.5.3 用一个静态成员变量存储中间结果 63
2.6 使用重复结构实现任意多算式计算 65
2.6.1 用while循环实现任意多算式计算 65
2.6.2 用do-while循环实现任意多算式计算 66
2.7 知识链接 67
2.7.1 条件表达式 67
2.7.2 左值表达式与右值表达式 67
2.7.3 标识符的域 69
2.7.4 变量的生命期与存储分配 70
2.7.5 类属变量、实例变量与局部变量的比较 71
习题2 72
第3单元 素数产生器 76
3.1 问题描述与对象建模 76
3.1.1 对象建模 76
3.1.2 getPrimeSequence( )函数的基本思路 77
3.2 使用isPrime(?)的PrimeGenerator类实现 77
3.2.1 用for结构实现的getPrimeSequence(?)函数 77
3.2.2 用for结构实现的isPrime(?)函数 79
3.2.3 完整的PrimeGenerator类及其测试 79
3.3 不使用isPrime(?)的PrimeGenerator类实现 80
3.3.1 采用嵌套重复结构的getPrimeSequence( )函数 80
3.3.2 重复结构中的continue语句和break语句 81
3.4 知识链接 82
3.4.1 C++操作符 82
3.4.2 具有副作用的表达式与序列点 83
3.4.3 算术类型转换 85
3.4.4 类型转换构造函数与explicit关键字 87
3.4.5 表达式类型的推断与获取:auto 与decltype 91
3.4.6 C++语句 92
习题3 93
第4单元 Time类 97
4.1 Time类需求分析与操作符重载 97
4.1.1 Time类需求分析 97
4.1.2 关键字operator与操作符重载 98
4.1.3 操作符+的重载 99
4.1.5 增量操作符++的重载 100
4.1.5 用友元函数实现<<重载 103
4.1.6 赋值操作符=的重载 104
4.1.7 操作符重载的基本规则 105
4.1.8 Time类的类型转换构造函数 107
4.2 浅复制与深复制 109
4.2.1 数据复制及其问题 109
4.2.2 复制构造函数再讨论 111
4.2.3 深复制的赋值操作符重载 113
4.3 动态内存分配 114
4.3.1 用new进行动态内存分配 114
4.3.2 用delete释放动态存储空间 115
4.3.3 对象的动态存储分配 116
4.3.4 动态内存分配时的异常处理 118
4.4 知识链接 119
4.4.1 友元 119
4.4.2 智能指针 123
习题4 124
第2篇 基于类的C++程序架构
第5单元 继承 133
5.1 单基继承 133
5.1.1 公司人员的类层次结构模型 133
5.1.2 C++继承关系的建立 133
5.1.3 在派生类中重定义基类成员函数 137
5.1.4 基于血缘关系的访问控制——protected 139
5.1.5 类层次结构中构造函数和析构函数的执行顺序 140
5.2 类层次中的赋值兼容规则与里氏代换原则 143
5.2.1 公开派生的赋值兼容规则 143
5.2.2 里氏代换原则 144
5.2.3 对象的向上转换和向下转换 144
5.3 多基继承 145
5.3.1 C++多基继承格式 145
5.3.2 计算机系统=软件+硬件问题的类结构 145
5.3.3 多基继承的歧义性问题 148
5.3.4 虚基类 149
习题5 150
第6单元 虚函数与动态绑定 154
6.1 画圆、三角形和矩形问题的类结构 154
6.1.1 3个分立的类 154
6.1.2 为3个分立的类设计一个公共父类 154
6.2 用虚函数实现动态绑定 155
6.2.1 虚函数与动态绑定 155
6.2.2 虚函数表 156
6.2.3 虚函数规则 157
6.2.4 用override和final修饰虚函数 159
6.2.5 纯虚函数与抽象类 161
6.3 运行时类型鉴别 163
6.3.1 RTTI概述 163
6.3.2 dynamic_cast 163
6.3.3 type_info类与typeid操作符 169
习题6 172
第7单元 面向对象程序结构优化 176
7.1 面向对象程序设计优化规则 176
7.1.1 引言 176
7.1.2 从可重用说起:合成/聚合优先原则 178
7.1.3 从可维护性说起:开闭原则 180
7.1.4 面向抽象原则 182
7.1.5 单一职责原则 188
7.1.6 接口分离原则 189
7.1.7 不要和陌生人说话 193
7.2 GoF设计模式举例:工厂模式 195
7.2.1 概述 195
7.2.2 简单工厂模式 196
7.2.3 工厂方法模式 198
习题7 200
第3篇 泛型程序设计
第8单元 模板 205
8.1 算法抽象模板——函数模板 205
8.1.1 从函数重载到函数模板 205
8.1.2 函数模板的实例化与具体化 206
8.2 数据抽象模板——类模板 209
8.2.1 类模板的定义 209
8.2.2 类模板的实例化与具体化 210
8.2.3 类模板的使用 211
8.2.4 类模板实例化时的异常处理 213
8.2.5 实例:MyVector模板类的设计 214
8.3 知识链接:数组 218
8.3.1 数组的特点 218
8.3.2 数组的定义与泛化常量表达式 218
8.3.3 数组的初始化规则 220
8.3.4 对象数组 221
8.3.5 数组存储空间的动态分配 223
习题8 223
第9单元 STL编程 230
9.1 STL概述 230
9.1.1 容器 230
9.1.2 迭代器 232
9.1.3 容器的成员函数 235
9.1.4 STL算法 238
9.1.5 函数对象 241
9.1.6 基于范围的for循环 243
9.1.7 STL标准头文件 244
9.2 扑克游戏——vector容器应用实例 245
9.2.1 vector容器的特点 245
9.2.2 扑克游戏对象模型 245
9.2.3 用vector容器对象poker存储54张扑克牌 246
9.2.4 洗牌函数设计 249
9.2.5 整牌函数设计 252
9.2.6 发牌函数设计 253
9.2.7 vector操作小结 256
9.3 list容器及其应用实例 257
9.3.1 构建list对象及其迭代器 257
9.3.2 操作list对象 258
9.3.3 基于list容器的约瑟夫斯问题求解 262
9.4 string 265
9.4.1 字符串对象的创建与特性描述 266
9.4.2 字符串对象的输入/输出 266
9.4.3 字符串的迭代器与字符操作 267
9.4.4 两字符串间的操作 271
9.5 stack容器 273
9.5.1 stack及其特点 273
9.5.2 stack的操作 273
9.5.3 应用举例:将一个十进制整数转换为K进制数 274
9.6 关联容器 276
9.6.1 用结构体定义的pair类模板 276
9.6.2 set和multiset容器 278
9.6.3 map和multimap容器 282
9.7 知识链接 286
9.7.1 const_iterator 286
9.7.2 分配器 287
习题9 288
第4篇 C++深入编程
第10单元 C++实体与名字 293
10.1 C++的存储属性 293
10.1.1 外部变量与extern关键字 293
10.1.2 static关键字 296
10.2 名字空间域 301
10.2.1 名字冲突与名字空间 301
10.2.2 名字空间的使用 305
10.2.3 无名名字空间和全局名字空间 307
习题10 308
第11单元 C++字面值与常量 311
11.1 字面值 311
11.1.1 整型字面值的表示和辨识 311
11.1.2 浮点类型字面值的表示和辨识 312
11.1.3 字符字面值 313
11.1.4 bool类型与bool常量 314
11.1.5 枚举类型与枚举常量 315
11.1.6 强类型枚举 317
11.2 const关键字 318
11.2.1 const符号常量 318
11.2.2 const用于指针声明 320
11.2.3 const限定类成员与对象 323
11.3 C++11的右值引用 326
11.3.1 右值引用的概念 326
11.3.2 C++11关于左值和右值概念的深化 327
11.3.3 C++的引用绑定规则 327
11.3.4 C++11的引用折叠规则 329
11.3.5 C++11的模板参数类型推导规则 330
习题11 330
第12单元 C++函数探幽 336
12.1 函数调用时的参数匹配与保护 336
12.1.1 函数调用时的参数匹配规则 336
12.1.2 形参带有默认值的函数 337
12.1.3 参数数目可变的函数 339
12.2 参数类型 339
12.2.1 值传递:变量/对象参数 339
12.2.2 地址传递:地址/指针参数 341
12.2.3 数组参数 342
12.2.4 名字传递:引用参数 344
12.2.5 const限定函数参数 347
12.3 移动语义与完美转发 348
12.3.1 移动语义 348
12.3.2 完美转发 351
12.4 函数返回 354
12.4.1 函数返回的基本规则 354
12.4.2 返回指针类型的函数 355
12.4.3 类型的返回左值引用 356
12.4.4 ??const限定函数返回值 358
12.5 Lambda表达式 360
12.5.1 简单的Lambda表达式 360
12.5.2 在方括号中加入函数对象参数 361
习题12 363
第13单元 C++ I/O流 366
13.1 流与C++流类 366
13.1.1 流与缓冲区 366
13.1.2 C++流类库 367
13.1.3 ios类声明 369
13.2 标准流对象与标准I/O流操作 370
13.2.1 C++标准流对象 370
13.2.2 标准输入/输出流操作 370
13.3 流的格式化 371
13.3.1 ios类的格式化成员函数和格式化标志 371
13.3.2 格式化操作符 371
13.4 文件流 372
13.4.1 文件流的概念及其分类 372
13.4.2 文件操作过程 373
13.5 流的错误状态及其处理 377
13.5.1 流的出错状态 377
13.5.2 测试与设置出错状态位的ios类成员函数 377
习题13 377
附录A C++保留字 379
A.1 C++关键字 379
A.2 C++替代标记 379
A.3 C++库保留名称 380
A.4 C++特定字 380
附录B C++运算符的优先级别和结合方向 381
附录C C++标准库 383
C.1 C++标准库头文件 383
C.1.1 标准库中与语言支持功能相关的头文件 383
C.1.2 支持流输入/输出的头文件 384
C.1.3 与诊断功能相关的头文件 384
C.1.4 定义工具函数的头文件 384
C.1.5 支持字符串处理的头文件 384
C.1.6 定义容器类的模板的头文件 384
C.1.7 支持迭代器的头文件 385
C.1.8 有关算法的头文件 385
C.1.9 有关数值操作的头文件 385
C.1.10 有关本地化的头文件 385
C.2 Boost库内容 385
C.2.1 字符串和文本处理库 386
C.2.2 容器库 386
C.2.3 迭代器库 387
C.2.4 算法库 387
C.2.5 函数对象和高阶编程库 387
C.2.6 泛型编程库 388
C.2.7 模板元编程 388
C.2.8 预处理元编程库 388
C.2.9 并发编程库 388
C.2.10 数学和数字库 388
C.2.11 排错和测试库 389
C.2.12 数据结构库 389
C.2.13 图像处理库 389
C.2.14 输入/输出库 390
C.2.15 跨语言混合编程库 390
C.2.16 内存管理库 390
C.2.17 解析库 390
C.2.18 编程接口库 390
C.2.19 综合类库 390
C.2.20 编译器问题的变通方案库 391
参考文献 392
内容摘要
内 容 简 介
本书是一本面向初学者的C++程序设计教材,以面向对象程序设计为主线,突出C++的基本特点,介绍了C++1y的重要新特性。全书共分为4篇13个单元。
靠前篇:C++面向对象启步。用4个单元帮助初学者建立面向对象的问题分析思维,掌握相关方法和语法知识,树立面向对象程序中“一切皆对象,一切来自类”的意识,初步领略面向对象程序设计之奥妙。
第2篇:基于类的C++程序框架设计。用3个单元帮助读者理解如何在一个程序中组织类以及什么样的类之间结构才是好的程序结构,进一步提升读者“程序设计 = 计算思维 + 语言艺术”的观念。
第3篇:C++泛型程序设计。用两个单元介绍多态和STL。C++的泛型的通用、灵活的特点将给读者的学习带来一定乐趣,也为读者将来从事程序开发工作提供了更多便捷方法。
第4篇:C++深入编程。用4个单元介绍C++在名字和实体、常量、函数、I/O流等几个方面的细节,让读者在程序开发上能够做到锦上添花。
本书理念优选、概念清晰、讲解透彻、便于理解。书中例题经典、习题丰富、覆盖
— 没有更多了 —
以下为对购买帮助不大的评价