新書推薦:
《
故宫书画集(精编盒装)版传统文化收藏鉴赏艺术书法人物花鸟扇面雕刻探秘故宫书画简体中文注释解析
》
售價:NT$
1490.0
《
《往事和近事(增订本)》(著名学者葛剑雄教授代表作,新增修订、全新推出。跨越三十多年的写作,多角度讲述中华文明)
》
售價:NT$
349.0
《
往事和近事:历史地理学泰斗、百家讲坛主讲葛剑雄经典文集
》
售價:NT$
349.0
《
父母的关键认知
》
售價:NT$
225.0
《
第三帝国:一部新的历史(纳粹主义具有何种魔力?纳粹运动会卷土重来吗?一部全面揭示希特勒及其罪恶帝国黑暗的历史)
》
售價:NT$
490.0
《
强迫症的历史:德国人的犹太恐惧症与大屠杀(德国历史上的反犹文化源自哪里?如何演化为战争对犹太人灭绝性的种族杀戮?德国历史研究专家克劳斯·费舍尔叙述德国反犹史及其极端形态的典范之作)
》
售價:NT$
440.0
《
粤港澳大湾区舆论引导与舆情应对精品案例:基于媒介化治理的思考
》
售價:NT$
445.0
《
大地的勇士
》
售價:NT$
340.0
|
編輯推薦: |
本书是一本面向初学者的C 程序设计教材,以面向对象程序设计为主线,突出C 的基本特点,介绍了C 1y的重要新特性。全书共分为4篇13个单元。
第1篇:C 面向对象启步。用4个单元帮助初学者建立面向对象的问题分析思维,掌握相关方法和语法知识,树立面向对象程序中一切皆对象,一切来自类的意识,初步领略面向对象程序设计之奥妙。
第2篇:基于类的C 程序框架设计。用3个单元帮助读者理解如何在一个程序中组织类以及什么样的类之间结构才是好的程序结构,进一步提升读者程序设计 =
计算思维 语言艺术的观念。
第3篇:C 泛型程序设计。用两个单元介绍多态和STL。C 的泛型的通用、灵活的特点将给读者的学习带来一定乐趣,也为读者将来从事程序开发工作提供了更多便捷方法。
第4篇:C 深入编程。用4个单元介绍C 在名字和实体、常量、函数、IO流等几个方面的细节,让读者在程序开发上能够做到锦上添花。
本书理念先进、概念清晰、讲解透彻、便于理解。书中例题经典、习题丰富、覆盖面广,适合作为高等学校各专业的面向对象程序设计教材。本书还可供培训机构使用,也可供相关
|
內容簡介: |
内 容 简 介
本书是一本面向初学者的C++程序设计教材,以面向对象程序设计为主线,突出C++的基本特点,介绍了C++1y的重要新特性。全书共分为4篇13个单元。
第1篇:C++面向对象启步。用4个单元帮助初学者建立面向对象的问题分析思维,掌握相关方法和语法知识,树立面向对象程序中“一切皆对象,一切来自类”的意识,初步领略面向对象程序设计之奥妙。
第2篇:基于类的C++程序框架设计。用3个单元帮助读者理解如何在一个程序中组织类以及什么样的类之间结构才是好的程序结构,进一步提升读者“程序设计 = 计算思维 + 语言艺术”的观念。
第3篇:C++泛型程序设计。用两个单元介绍多态和STL。C++的泛型的通用、灵活的特点将给读者的学习带来一定乐趣,也为读者将来从事程序开发工作提供了更多便捷方法。
第4篇:C++深入编程。用4个单元介绍C++在名字和实体、常量、函数、IO流等几个方面的细节,让读者在程序开发上能够做到锦上添花。
本书理念先进、概念清晰、讲解透彻、便于理解。书中例题经典、习题丰富、覆盖面广,适合作为高等学校各专业的面向对象程序设计教材。本书还可供培训机构使用,也可供相关领域人员自学。
|
目錄:
|
第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 IO流 366
13.1 流与C 流类 366
13.1.1 流与缓冲区 366
13.1.2 C 流类库 367
13.1.3 ios类声明 369
13.2 标准流对象与标准IO流操作 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
|
|