种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

C++大学教程(第3版)

(2019-08-24 07:50:45) 百科综合
C++大学教程(第3版)

C++大学教程(第3版)

《C++大学教程(第3版)》是2005年清华大学出版社出版的图书,作者是那格勒,译者是侯普秀。

基本介绍

  • 书名:C++大学教程
  • 作者:那格勒
  • 原版名称:Learning C++
  • 译者:侯普秀
  • ISBN:9787302098492
  • 类别:科技
  • 页数:432
  • 定价:49.8
  • 出版社:清华大学出版社
  • 出版时间:2005-3
  • 装帧:平装
  • 开本:25.6 x 18.2 x 2.2 cm

内容简介

《C++大学教程》是一本C++编程方面的优秀教程,全面介绍了过程式编程与面向对象编程的原理与方法,细緻地分析了各种性能问题、可移植性问题以及可能出错的情况。作者通过大量的示例程式,重点突出了面向对象的设计,引入了流行的套用开发,并且帮助学生创建真实世界的C++应用程式。本书无论从广度和深度上来说都非常全面,并且从基础概念讲起,同样适合没有编程经验的读者学习。
本书通过示例方法介绍了C++程式设计语言。书中给出了400多个简短易懂的示例,本书可以作为您的课堂笔记、指南和参考。书中提供了详细而牢靠的技巧以及概念的进阶,其详细程度超过了大多数C++书籍。本书既可以独立使用,也可以在课堂上用作笔记、教材或者参考指南。

图书目录

第1章 由C迁移到C++ 1
1.1 概述 1
1.2 C与C++的比较 1
1.3 编译器如何识别C++程式 1
1.4 预处理器如何识别环境 2
1.5 新的注释风格 2
1.6 永远不要假定(隐式地使用int类型) 3
1.7 main()的默认返回值 3
1.8 声明与定义的区别 4
1.9 函式声明中的形参名称 4
1.10 函式定义中的形参名称 4
1.11 所有的函式在调用前必须先声明 5
1.12 空圆括弧的含义 5
1.13 函式参数的默认值 5
1.14 初始化与赋值的区别 6
1.15 放置变数声明的地方 7
1.16 for循环内的变数声明 8
1.17 标记名成为类型名 8
1.18 C++与C中枚举类型的区别 9
1.19 初始化全局变数 10
1.20 数组初始化 11
1.21 布尔类型 11
1.22 void *指针 12
1.23 使用0,而不是宏NULL 13
1.24 关键字const 13
1.24.1 所有的常量必须初始化 13
1.24.2 将常量值的参数传递给函式的含义 14
1.24.3 函式返回值为常量的含义 14
1.24.4 const如何影响指针 14
1.24.5 C++与C中字元数组的区别 15
1.24.6 如何支持char const*类型的数组 16
1.24.7 C以及C++处理const方式的区别 16
1.24.8 使用const而不是#define 17
1.24.9 const 变数的连线 18
1.25 新的类型强制转换风格 18
1.25.1 类型强制转换以及转换的区别 18
1.25.2 类型强制转换的一般格式 19
1.25.3 static_cast 19
1.25.4 reinterpret_cast 20
1.25.5 const_cast 20
1.25.6 您不会犯错 21
1.26 C以及C++关键字 21
第2章 命名空间 23
2.1 概述 23
2.2 存在的问题 23
2.3 如何创建命名空间 24
2.4 作用域分解运算符 25
2.5 如何访问命名空间的成员 25
2.5.1 直接访问命名空间的成员 25
2.5.2 using声明-- 访问命名空间成员的另一种方法 26
2.5.3 using 指令--访问命名空间成员的另一种方法 27
2.6 小心避免不明确的情况 28
2.7 无名的命名空间 28
2.8 命名空间的别名 29
2.9 Koenig 查找规则 30
第3章 输入/输出基础 32
3.1 概述 32
3.2 使用新函式的理由 32
3.3 头档案-- 命名约定 33
3.4 iostream头档案 33
3.5 cout对象 33
3.5.1 插入运算符 34
3.5.2 显式地限定cout对象 34
3.5.3 使用using声明来访问cout对象 35
3.5.4 使用using指令来访问cout对象 35
3.6 关于正确使用std命名空间的建议 36
3.7 了解运算符的优先权 37
3.8 输出格式 37
3.9 cin对象 37
3.10 检查档案是否结束 39
第4章 引用变数 42
4.1 概述 42
4.2 存在的问题 42
4.3 如何创建引用变数 44
4.4 所有的引用都必须初始化 44
4.5 引用的作用 44
4.6 使用const限定引用 45
4.7 何时不需要使用引用 46
4.8 没有“常量引用” 47
4.9 创建对指针的引用 47
4.10 创建对数组的引用 48
4.11 由函式返回引用 49
第5章 动态记忆体分配 51
5.1 概述 51
5.2 如何为单个对象分配动态记忆体 51
5.3 如何初始化基本类型 52
5.4 空圆括弧的含义 52
5.5 如何释放单个对象的空闲空间 53
5.6 如何为对象的数组分配空闲空间 53
5.7 如何释放对象数组的空闲空间 54
5.8 保持平衡 55
5.9 如何使用new和delete在空闲存储区中存储字元串 55
5.10 如何分配和删除多维数组 57
5.11 命名该空间 58
5.12 两个程式输出示例 58
第6章 类 61
6.1 概述 61
6.2 C中的结构 61
6.2.1 全局函式 62
6.2.2 C存在的问题 62
6.3 初识封装 63
6.3.1 修订后的Circle抽象 63
6.3.2 必须支持常量对象 64
6.4 结构与类 64
6.5 类的用途 65
6.6 类的组件 65
6.7 如何编写类定义 65
6.7.1 类声明与类定义 66
6.7.2 关于输入/输出类 69
6.8 数据隐藏的原则 69
6.9 访问限定符 71
6.9.1 private关键字 72
6.9.2 public关键字 73
6.9.3 protected 关键字 73
6.9.4 选择编码风格 73
6.10 模组化并实现隐藏 74
6.10.1 如何模组化 75
6.10.2 用户的任务 77
6.10.3 本节小结 77
6.11 如何通过实例来访问类成员 77
6.12 内联函式 79
6.12.1 内联函式的含义 80
6.12.2 内联函式与宏的对比 80
6.12.3 使得内联函式对编译器有效 80
6.12.4 放置内联函式的地方 81
6.12.5 内联函式的连线 81
6.12.6 如何编写全局成员内联函式 81
6.12.7 如何编写类成员内联函式 82
6.12.8 隐式内联和显式内联的比较 84
6.13 mutable 关键字 84
6.14 如何显示类的内容 85
6.15 类中的枚举类型 87
6.15.1 使用枚举的原因 88
6.15.2 私有枚举 88
6.15.3 公有枚举 90
6.15.4 “Enum Hack”的作用 91
第7章 构造函式和析构函式 94
7.1 概述 94
7.2 构造函式的定义 94
7.2.1 语法规则 95
7.2.2 何时不调用构造函式 95
7.2.3 编译器提供的默认构造函式 96
7.2.4 默认的构造函式:普遍定义 97
7.2.5 初始化常量对象 98
7.2.6 构造函式重载 98
7.2.7 不能直接调用构造函式 100
7.3 析构函式的定义 101
7.3.1 编译器提供的析构函式 101
7.3.2 析构函式的作用 101
7.3.3 编写您自己的析构函式 102
7.3.4 语法规则 102
7.4 如何实例化类并调用默认构造函式 103
7.5 如何实例化类并向构造函式传递参数 103
7.6 如何阻止使用默认构造函式的实例化 104
7.7 隐式类型转换 106
7.8 複製构造函式 109
7.8.1 默认複製构造函式 110
7.8.2 複製构造函式的语法 111
7.8.3 複製构造函式的数量 111
7.8.4 浅複製与深複製 111
7.8.5 编写您自己的複製构造函式 112
7.8.6 如何阻止对象複製 114
7.9 函式风格的强制转换 115
7.10 初始化与赋值 118
7.11 基/成员初始化列表 118
7.11.1 默认初始化 120
7.11.2 强制使用基/成员初始化列表 120
7.11.3 另一种初始化调用的情况 121
7.12 关于指针 123
7.13 形参名与类成员名 123
7.14 非静态数据成员的初始化顺序 123
7.15 基本类型的数组作为非静态数据成员 125
7.16 用户自定义类型数组作为非静态数据成员 125
7.17 如何创建用户自定义实例的数组 126
7.18 如何声明常量数据成员数组 128
7.19 如何在空闲存储区中创建用户自定义类型 128
7.20 如何在空闲存储区中创建用户自定义类型的数组 129
7.21 调用new时的语法 129
第8章 类的其他特徵 134
8.1 概述 134
8.2 this指针 134
8.2.1 解引用this指针来複製调用对象 136
8.2.2 解引用this指针以允许连结函式 137
8.3 静态类数据成员 139
8.3.1 在类的定义中初始化静态类数据成员 142
8.3.2 静态成员函式 143
8.3.3 用于生成随机数的类 145
8.3.4 Die类 145
8.3.5 Dice类 147
8.4 类的大小 151
8.5 友元函式 152
8.5.1 类如何授权一个函式作为它的友元函式 152
8.5.2 成员函式和非成员函式 153
8.5.3 使用非成员非友元函式替代友元函式 155
8.5.4 在命名空间中声明类的友元函式 156
8.6 友元类 158
8.7 类的封装 162
8.8 运算符转换函式 169
8.8.1 用途 169
8.8.2 语法 170
8.9 类成员指针 171
8.9.1 全局函式指针 171
8.9.2 指向非静态类成员函式的指针 172
8.9.3 使用指向非静态成员函式的指针调用函式 172
8.9.4 指向静态类成员函式的指针 173
第9章 异常处理 174
9.1 概述 174
9.2 如何抛出异常 174
9.3 如何捕获异常 174
9.4 catch代码块的匹配处理 176
9.5 异常处理的一个简单示例 176
9.6 释放堆叠 177
9.7 如果调用new失败怎幺办 177
9.8 如何防止new抛出异常 178
9.9 异常的传播 179
9.10 如何处理指向空闲空间的指针 181
9.11 不能销毁还没有创建的对象 184
9.12 重新抛出对象 184
9.13 从子对象成员中捕获抛出的异常 184
9.14 function-try-blocks 185
9.15 子对象成员和指针的混合使用 187
9.16 对象的局部结构 189
9.17 编写异常-安全代码 190
9.17.1 堆叠中的简单对象 190
9.17.2 堆叠中的对象数组 191
9.17.3 空闲存储区中的简单对象 191
9.17.4 再论空闲存储区中的简单对象 192
9.17.5 空闲存储区中的对象数组 193
9.17.6 再论空闲存储区中的对象数组 195
9.18 析构函式和异常处理 196
9.19 异常规範 196
9.20 出错条件 197
9.20.1 意外错误 198
9.20.2 终止错误 198
9.21 编译器如何对待异常规範 198
9.22 为类定义operator new()函式 199
第10章 函式重载 203
10.1 概述 203
10.2 几个关于函式重载的示例 203
10.3 忽略返回类型 204
10.4 const限定参数按值传递 204
10.5 const限定参数按指针传递 204
10.6 const限定参数按引用传递 205
10.7 可变成员函式和常量成员函式 205
10.8 重载决议 206
10.9 根据指针类型重载 207
10.10 名称重整 207
10.10.1 如何避免名称重整 208
10.10.2 类型-安全连线 209
10.11 运算符函式重载 210
10.11.1 运算符优先权表 211
10.11.2 重载运算符的命名 213
10.11.3 默认参数 213
10.11.4 C++自带的运算符 213
10.11.5 不能改变优先权 214
10.11.6 不能改变“Narity” 214
10.11.7 不能改变结合性 214
10.11.8 成员函式与非成员函式 214
10.11.9 至少支持一个类实例 215
10.11.10 中缀表示法和函式表示法 215
10.11.11 二元成员函式和隐式类型转换 216
10.11.12 多次重载或者允许隐式类型转换 218
10.11.13 运算符的重载 219
10.11.14 赋值运算符 220
10.11.15 函式调用运算符 223
10.11.16 下标运算符 225
10.11.17 间接成员运算符 226
10.11.18 複合赋值运算符 229
10.11.19 自增运算符和自减运算符 231
10.11.20 重载逗号运算符 233
10.11.21 重载逻辑与和逻辑或运算符 233
10.11.22 重载插入运算符 234
10.11.23 运算符小结 235
第11章 继承 238
11.1 概述 238
11.2 记忆体中的派生类实例 238
11.3 使用继承创建is-a关係 238
11.4 如何定义派生类 239
11.5 再论结构和类 240
11.6 关键字protected 240
11.7 访问特权 241
11.8 基类“存取器”函式 242
11.9 修改继承访问 243
11.10 函式隐藏 245
11.11 派生类成员函式如何调用基类成员函式 248
11.12 管理函式 249
11.12.1 如何编写管理函式 250
11.12.2 派生类到基类的标準转换 254
11.12.3 隐藏非成员函式 255
11.12.4 不要对数组进行向上类型转换 257
11.13 多态性 257
11.14 多态性和虚函式 262
11.14.1 友好的程式代码和不友好的程式代码 263
11.14.2 重写虚函式 263
11.14.3 虚析构函式 265
11.14.4 从基类的构造函式中调用虚函式 266
11.15 抽象基类 266
11.15.1 再论关于贷款的示例 267
11.15.2 关于虚函式的异常规範 267
11.16 里氏代换原则 268
11.17 多重继承 270
11.17.1 虚基类 273
11.17.2 初始化虚基类 274
第12章 模板 278
12.1 概述 278
12.2 函式模板 278
12.2.1 不使用宏的原因 279
12.2.2 如何编写函式模板 280
12.2.3 最佳化代码 281
12.2.4 在何处使用函式模板 282
12.2.5 针对不同的参数类型进行实例化 283
12.2.6 显式地指定类型 284
12.2.7 默认的函式参数 285
12.2.8 完全特殊化函式模板 286
12.2.9 如何调用特殊化的函式 288
12.2.10 对特殊化和重载的选择 291
12.2.11 特殊化greater()函式模板 294
12.3 类模板 297
12.3.1 如何定义类模板 297
12.3.2 在类定义之外定义成员 298
12.3.3 实例化类模板 299
12.3.4 另一个模板的模板实例化 299
12.3.5 默认模板参数 300
12.3.6 在类模板中声明另一个友元类 301
12.3.7 在类模板中声明友元函式 301
12.3.8 特殊化类模板 307
12.3.9 在类模板中嵌入类模板 313
12.3.10 从类模板中派生新类 315
12.4 非类型模板参数 317
12.4.1 默认的模板参数和特殊化 318
12.4.2 关于使用非类型模板参数的有趣示例 320
12.5 成员模板 322
12.6 模板模式 326
12.7 关键字typename 329
第13章 运行时类型信息 332
13.1 概述 332
13.2 动态转型态 332
13.3 动态转型态是如何工作的 333
13.4 关键字typeid 335
第14章 输出流 341
14.1 概述 341
14.2 实例 std::cerr和std::clog 341
14.3 如何格式化输出 341
14.3.1 位格式标誌 342
14.3.2 如何打开位格式标誌 343
14.3.3 如何以合适的基数显示整数 345
14.3.4 如何显示整数的基数设定 347
14.3.5 如何显示整数的符号 347
14.3.6 如何将输出显示为大写字母 348
14.3.7 如何显示字元 349
14.3.8 如何设定输出栏位宽度 350
14.3.9 如何指定填充字元 351
14.3.10 如何指定栏位对齐 352
14.3.11 如何格式化浮点型数值 353
14.4 如何显示bool类型 357
14.5 如何显示地址 358
14.6 如何输出到记忆体缓冲区 359
14.6.1 成员函式ostream::flush() 360
14.6.2 预定义的stdio和iostream流的混合使用 360
第15章 输入流 362
15.1 概述 362
15.2 如何检查错误 362
15.2.1 错误报告标誌 362
15.2.2 访问成员函式 363
15.2.3 直接测试iostream对象 364
15.2.4 成员函式std::basic_ios::clear() 366
15.2.5 如何清空输入流的缓冲区 368
15.3 字元输入 370
15.3.1 使用提取运算符实现对字元串的输入 372
15.3.2 限制输入字元的个数 372
15.3.3 使用std::istream::getline()实现字元串输入 374
第16章 操纵符 376
16.1 概述 376
16.2 操纵符的格式 376
16.3 一些简单的操纵符 377
16.4 不带参数调用的内置操纵符 380
16.5 使用带有一个参数的操纵符 381
16.6 使用带有一个参数的内置操纵符 383
第17章 档案输入/输出 385
17.1 概述 385
17.2 档案输入/输出类 385
17.3 档案输出 386
17.3.1 档案名称参数 386
17.3.2 档案模式参数 387
17.3.3 验证档案是否打开 387
17.3.4 关闭打开的档案 387
17.3.5 输出磁碟档案示例 388
17.4 档案输入 389
17.5 档案位置标记 390
17.6 档案更新 391
17.7 二进制模式 392
17.8 未格式化的输出 394
17.9 未格式化的输入 396
17.10 重定向I/O 397
第18章 string类与标準模板库 400
18.1 概述 400
18.2 string类 400
18.3 标準模板库 404
18.3.1 std::vector类 404
18.3.2 叠代器 407
18.3.3 叠代器的类型 408
18.3.4 基于string的I/O 414
18.3.5 标準模板库中的算法 417
18.3.6 标準模板库的主要容器 423
18.3.7 比较对象 423
附录A 参考书目 429
附录B C++準则 431

标 签

搜索
随机推荐

Powered By 种豆资源网||