c++程序设计语言

目录导航

内容提要

  C++在C语言的基础上,增加了对 面向对象编程、类属编程、数据抽象等技术的支持,还对C语言进行了非面向对象的扩充。使用C++语言进行程序设计可以获得可重用性、可靠性、连续性、访问控制、继承性以及 多态性等优势。   本书是基于第一版的修订。继承了第一版提供完整实例的特点,例子全新并紧贴学生实际。向读者介绍主要支持 结构化程序设计的C语言,以及在C语言基础上进行扩展的支持面向对象程序设计的C++语言。在介绍C/ C++语言的同时,还介绍了结构化程序设计以及面向对象程序设计的主要内容。

图书信息

  书 名: C++程序设计语言   作 者: 本贾尼 斯特朗斯特鲁普(Bjarne Stroustrup)   出版社: 机械工业出版社   出版时间: 2010年3月1日   ISBN: 9787111298854   开本: 16开   定价: 99.00元

内容简介

  《C++程序设计语言(特别版·十周年中文纪念版)》是在C++语言和程序设计领域具有深远影响、畅销不衰的著作,由C++语言的设计者编写,对C++语言进行了最全面、最权威的论述,覆盖标准C++以及由C++所支持的关键性编程技术和设计技术。《C++程序设计语言(特别版·十周年中文纪念版)》英文原版一经面世,即引起业内人士的高度评价和热烈欢迎,先后被翻译成德、希、匈、西、荷、法、日、俄、中、韩等近20种语言,数以百万计的程序员从中获益,是无可取代的C++经典力作。   在《C++程序设计语言(特别版·十周年中文纪念版)》英文原版面世10年后的今天,特别奉上十周年中文纪念版,希望众多具有丰富实战经验的C++开发人员能够 温故而知新,印证学习心得,了解更加本质的C++知识,让获得的理论应用得更加灵活,也期望新的C++程序员从中认识到这本书的价值所在,从更高的起点出发,书写更加精彩的程序设计人生。

作者简介

  斯特朗斯特鲁普(Bjarne Stroustrup), 英国剑桥大学计算机科学博士,C++语言的设计者和最初的实现者,也是《C++程序设计原理与实践》和《C++语言的设计和演化》的作者。他现在是 德州农工大学计算机科学首席教授,同时不审AT&T 贝尔实验室特别成员。1993年,由于在C++领域的重大贡献,他获得了ACM的Grace Murray Hopper大奖并成为ACM院士;2008年,他又获得了Dr.Dobb's杂志的程序设计杰出奖。在进入学术界之前,他在AT&T贝尔实验室工作。他是ISO C++标准委员会的创始人之一。

图书目录

  出版者的话   专家指导委员会   中文版序   译者序   序   第2版序   第1版序   导 论   第1章 致读者 3   1.1 本书的结构 3   1.1.1 例子和参考 4   1.1.2 练习 5   1.1.3 有关实现的注记 5   1.2 学习C++ 6   1.3 C++ 的设计 7   1.3.1 效率和结构 8   1.3.2 哲学注记 9   1.4 历史注记 9   1.5 C++ 的使用 11   1.6 C和C++ 12   1.6.1 给C程序员的建议 13   1.6.2 给C++程序员的建议 13   1.7 有关在C++里编程的思考 14   1.8 忠告 15   1.9 参考文献 16   第2章 C++概览 19   2.1 为什么是C++ 19   2.2 程序设计范型 19   2.3 过程式程序设计 20   2.3.1 变量和算术 21   2.3.2 检测和循环 22   2.3.3 指针和数组 23   2.4 模块程序设计 23   2.4.1 分别编译 24   2.4.2 异常处理 25   2.5 数据抽象 26   2.5.1 定义类型的模块 27   2.5.2 用户定义类型 28   2.5.3 具体类型 29   2.5.4 抽象类型 31   2.5.5 虚函数 33   2.6 面向对象的程序设计 33   2.6.1 具体类型的问题 33   2.6.2 类层次结构 34   2.7 通用型程序设计 36   2.7.1 容器 36   2.7.2 通用型算法 37   2.8 附言 38   2.9 忠告 39   第3章 标准库概览 40   3.1 引言 40   3.2 Hello, world! 40   3.3 标准库名字空间 41   3.4 输出 41   3.5 字符串 42   3.5.1 C风格的字符串 44   3.6 输入 44   3.7 容器 46   3.7.1 向量-vector 46   3.7.2 范围检查 47   3.7.3 表-list 48   3.7.4 映射-map 49   3.7.5 标准容器 49   3.8 算法 50   3.8.1 迭代器的使用 51   3.8.2 迭代器类型 52   3.8.3 迭代器和I/O 53   3.8.4 遍历和谓词 54   3.8.5 使用成员函数的算法 56   3.8.6 标准库算法 56   3.9 数学 57   3.9.1 复数 57   3.9.2 向量算术 57   3.9.3 基本数值支持 58   3.10 标准库功能 58   3.11 忠告 58   第一部分 基本功能   第4章 类型和声明 63   4.1 类型 63   4.1.1 基本类型 64   4.2 布尔量 64   4.3 字符类型 65   4.3.1 字符文字量 66   4.4 整数类型 66   4.4.1 整数文字量 66   4.5 浮点类型 67   4.5.1 浮点文字量 67   4.6 大小 68   4.7 void 69   4.8 枚举 69   4.9 声明 71   4.9.1 声明的结构 72   4.9.2 声明多个名字 73   4.9.3 名字 73   4.9.4 作用域 74   4.9.5 初始化 75   4.9.6 对象和 左值 76   4.9.7 typedef 76   4.10 忠告 77   4.11 练习 77   第5章 指针、数组和结构 79   5.1 指针 79   5.1.1 零 80   5.2 数组 80   5.2.1 数组初始化 80   5.2.2 字符串文字量 81   5.3 到数组的指针 83   5.3.1 在数组里漫游 83   5.4 常量 85   5.4.1 指针和常量 87   5.5 引用 88   5.6 指向void的指针 90   5.7 结构 91   5.7.1 类型等价 94   5.8 忠告 94   5.9 练习 94   第6章 表达式和语句 96   6.1 一个桌面计算器 96   6.1.1 分析器 96   6.1.2 输入函数 100   6.1.3 低级输入 102   6.1.4 错误处理 103   6.1.5 驱动程序 104   6.1.6 头文件 104   6.1.7 命令行参数 105   6.1.8 有关风格的注记 106   6.2 运算符概览 107   6.2.1 结果 109   6.2.2 求值顺序 110   6.2.3 运算符优先级 110   6.2.4 按位逻辑运算符 111   6.2.5 增量和减量 112   6.2.6 自由存储 113   6.2.7 显式类型转换 116   6.2.8 构造函数 117   6.3 语句概览 118   6.3.1 声明作为语句 119   6.3.2 选择语句 119   6.3.3 迭代语句 122   6.3.4 goto 123   6.4 注释和缩进编排 123   6.5 忠告 125   6.6 练习 125   第7章 函数 128   7.1 函数声明 128   7.1.1 函数定义 128   7.1.2 静态变量 129   7.2 参数传递 130   7.2.1 数组参数 131   7.3 返回值 132   7.4 重载函数名 133   7.4.1 重载和返回类型 135   7.4.2 重载与作用域 135   7.4.3 手工的歧义性解析 135   7.4.4 多参数的解析 136   7.5 默认参数 137   7.6 未确定数目的参数 138   7.7 指向函数的指针 139   7.8 宏 143   7.8.1 条件编译 145   7.9 忠告 145   7.10 练习 146   第8章 名字空间和异常 148   8.1 模块化和界面 148   8.2 名字空间 150   8.2.1 带限定词的名字 151   8.2.2 使用声明 152   8.2.3 使用指令 153   8.2.4 多重界面 154   8.2.5 避免名字冲突 157   8.2.6 名字查找 159   8.2.7 名字空间别名 159   8.2.8 名字空间组合 160   8.2.9 名字空间和老代码 163   8.3 异常 166   8.3.1 抛出和捕捉 167   8.3.2 异常的辨识 168   8.3.3 在计算器中的异常 169   8.4 忠告 173   8.5 练习 173   第9章 源文件和程序 175   9.1 分别编译 175   9.2 连接 176   9.2.1 头文件 178   9.2.2 标准库头文件 179   9.2.3 单一定义规则 180   9.2.4 与非C++代码的连接 182   9.2.5 连接与指向函数的指针 184   9.3 使用头文件 184   9.3.1 单一头文件 184   9.3.2 多个头文件 187   9.3.3 包含保护符 191   9.4 程序 192   9.4.1 非局部变量的初始化 192   9.5 忠告 194   9.6 练习 194   第二部分 抽象机制   第10章 类 199   10.1 引言 199   10.2 类 199   10.2.1 成员函数 200   10.2.2 访问控制 201   10.2.3 构造函数 202   10.2.4 静态成员 203   10.2.5 类对象的复制 204   10.2.6 常量成员函数 205   10.2.7 自引用 205   10.2.8 结构和类 208   10.2.9 在类内部的函数定义 210   10.3 高效的用户定义类型 210   10.3.1 成员函数 212   10.3.2 协助函数 214   10.3.3 重载的运算符 215   10.3.4 具体类型的意义 215   10.4 对象 216   10.4.1 析构函数 216   10.4.2 默认构造函数 217   10.4.3 构造和析构 218   10.4.4 局部变量 218   10.4.5 自由存储 220   10.4.6 类对象作为成员 221   10.4.7 数组 223   10.4.8 局部静态存储 224   10.4.9 非局部存储 225   10.4.10 临时对象 226   10.4.11 对象的放置 228   10.4.12 联合 229   10.5 忠告 230   10.6 练习 230   第11章 运算符重载 233   11.1 引言 233   11.2 运算符函数 234   11.2.1 二元和一元运算符 235   11.2.2 运算符的预定义意义 236   11.2.3 运算符和用户定义类型 236   11.2.4 名字空间里的运算符 237   11.3 一个复数类型 238   11.3.1 成员运算符和非成员运算符 238   11.3.2 混合模式算术 239   11.3.3 初始化 240   11.3.4 复制 241   11.3.5 构造函数和转换 242   11.3.6 文字量 243   11.3.7 另一些成员函数 243   11.3.8 协助函数 244   11.4 转换运算符 245   11.4.1 歧义性 246   11.5 友元 248   11.5.1 友元的寻找 249   11.5.2 友元和成员 250   11.6 大型对象 251   11.7 基本运算符 253   11.7.1 显式构造函数 253   11.8 下标 255   11.9 函数调用 256   11.10 间接 257   11.11 增量和减量 259   11.12 一个字符串类 260   11.13 忠告 265   11.14 练习 265   第12章 派生类 268   12.1 引言 268   12.2 派生类 269   12.2.1 成员函数 271   12.2.2 构造函数和析构函数 272   12.2.3 复制 273   12.2.4 类层次结构 273   12.2.5 类型域 274   12.2.6 虚函数 276   12.3 抽象类 278   12.4 类层次结构的设计 280   12.4.1 一个传统的层次结构 280   12.4.2 抽象类 283   12.4.3 其他实现方式 285   12.4.4 对象创建的局部化 287   12.5 类层次结构和抽象类 289   12.6 忠告 289   12.7 练习 289   第13章 模板 292   13.1 引言 292   13.2 一个简单的String模板 293   13.2.1 定义一个模板 294   13.2.2 模板实例化 295   13.2.3 模板参数 296   13.2.4 类型等价 296   13.2.5 类型检查 297   13.3 函数模板 298   13.3.1 函数模板的参数 299   13.3.2 函数模板的重载 300   13.4 用模板参数描述策略 302   13.4.1 默认模板参数 303   13.5 专门化 304   13.5.1 专门化的顺序 306   13.5.2 模板函数的专门化 307   13.6 派生和模板 308   13.6.1 参数化和继承 309   13.6.2 成员模板 310   13.6.3 继承关系 311   13.7 源代码组织 312   13.8 忠告 314   13.9 练习 314   第14章 异常处理 316   14.1 错误处理 316   14.1.1 关于异常的其他观点 318   14.2 异常的结组 318   14.2.1 派生的异常 319   14.2.2 多个异常的组合 321   14.3 捕捉异常 321   14.3.1 重新抛出 322   14.3.2 捕捉所有异常 322   14.4 资源管理 324   14.4.1 构造函数和析构函数的使用 325   14.4.2 auto_ptr 326   14.4.3 告诫 328   14.4.4 异常和new 328   14.4.5 资源耗尽 329   14.4.6 构造函数里的异常 331   14.4.7 析构函数里的异常 332   14.5 不是错误的异常 333   14.6 异常的描述 334   14.6.1 对异常描述的检查 335   14.6.2 未预期的异常 336   14.6.3 异常的映射 336   14.7 未捕捉的异常 338   14.8 异常和效率 339   14.9 处理错误的其他方式 340   14.10 标准异常 342   14.11 忠告 344   14.12 练习 344   第15章 类层次结构 346   15.1 引言和概述 346   15.2 多重继承 346   15.2.1 歧义性解析 348   15.2.2 继承和使用声明 349   15.2.3 重复的基类 350   15.2.4 虚基类 352   15.2.5 使用多重继承 354   15.3 访问控制 357   15.3.1 保护成员 359   15.3.2 对基类的访问 360   15.4 运行时类型信息 361   15.4.1 dynamic_cast 363   15.4.2 在类层次结构中漫游 365   15.4.3 类对象的构造与析构 367   15.4.4 typeid和扩展的类型信息 368   15.4.5 RTTI的使用和误用 370   15.5 指向成员的指针 371   15.5.1 基类和派生类 373   15.6 自由存储 374   15.6.1 数组分配 375   15.6.2 虚构造函数 376   15.7 忠告 377   15.8 练习 377   第三部分 标准库   第16章 库组织和容器 381   16.1 标准库的设计 381   16.1.1 设计约束 382   16.1.2 标准库组织 383   16.1.3 语言支持 385   16.2 容器设计 386   16.2.1 专门化的容器和迭代器 386   16.2.2 有基类的容器 388   16.2.3 STL容器 391   16.3 向量 392   16.3.1 类型 393   16.3.2 迭代器 394   16.3.3 元素访问 395   16.3.4 构造函数 396   16.3.5 堆栈操作 399   16.3.6 表操作 401   16.3.7 元素定位 403   16.3.8 大小和容量 404   16.3.9 其他成员函数 406   16.3.10 协助函数 406   16.3.11 vector[bool] 407   16.4 忠告 407   16.5 练习 408   第17章 标准容器 409   第18章 算法和函数对象 449   第19章 迭代器和分配器 485   第20章 串 511   第21章 流 533   第22章 数值 578   第四部分 用C++ 做设计   第23章 开发和设计 607   第24章 设计和编程 635   第25章 类的作用 670   附录和索引   附录A 语法 695   附录B 兼容性 713   附录C 技术细节 724   附录D 现场 759   附录E 标准库的异常时安全性 815   索引 845

编辑推荐

《C++程序设计语言(特别版•十周年中文纪念版)》编辑推荐:十周年纪念版,体味C++语言的精妙与魅力,享受与大师的心灵对话。1979年,Biarne Stroustrup博士开始进行一项现在看来具有深远意义的工作一在C语言的基础上实现了内建支持面向对象程序设计方法的C with Classes,这就是震铄当代、让全世界数百万程序员如痴如狂的C++语言的前身。
1998年,ANSI/ISOC++标准建立,C++的标准化标志着Stroustrup博士俪注多年心血的伟大构想终于实现。
2000年,Stroustrup博士推出其经典著作The C++ Programming Language的特别版,这位C++之父将其对C++语言要义的理解、对编程精髓的把握、致C++程序员的箴言融会在这本书中,使《C++程序设计语言(特别版•十周年中文纪念版)》自面世以来便成为C++编程领域最重要的著作,对全世界C++程序员产生了广泛而深刻的影响。
十年后,让我们重温经典,体味C++语言的精妙与魅力,享受与大师的心灵对话……
C++之父的经典之作
第1版1985年,第2版1991年,第3版1997年,特别版2000年,让经典无限延伸……
《C++程序设计语言(特别版•十周年中文纪念版)》是在C++语言和程序设计领域具有深远影响、畅销不衰的著作,由C++语言之父Bjarne Stroustrup撰写,对C++语言进行了最全面、最权威的论述,覆盖标准C++以及由C++所支持的关键性编程技术和设计技术。《C++程序设计语言(特别版•十周年中文纪念版)》英文原版一经面世,即引起业内人士的高度评价和热烈欢迎,先后被翻译成德、希、匈、西、荷、法、日、俄、中、韩等近20种语言,数以百万计的程序员从中获益,是拥有最多读者、使用最广泛的C++著作。
在《C++程序设计语言(特别版•十周年中文纪念版)》英文原版面世10年后的今天,特别奉上十周年中文纪念版,希望众多具有丰富实战经验的C++开发人员能够温故而知新,印证学习心得,了解更加本质的C++知识,让获得的理论应用得更加灵活,也期望新的C++程序员从中认识到这本书的价值所在,从更高的起点出发,书写更加精彩的程序设计人生。

序言

Bjarne Stroustrup的《The C++ Programming Language》是有关C++语言的第一部著作。毫无疑问,它是关于C++语言及其程序设计的最重要著作,在此领域中的地位是无可替代的。《The C++ Programming Language》一书伴随着C++语言的发展演化而不断进步,经过第1版(1985年)、第2版(1991年),第3版(1998年),本书的英文原书是《The C++ Programming Language》第3版经过补充和修订后的“特别版(2000)”(对应于国内引进的影印本)。对于这个中译本,我想说的第一句话就是“来得太晚了”。
要学习C++语言和程序设计,要将C++应用于程序设计实践,本书自然是必读之书。这个“特别版”以标准化的C++语言为基础,讨论了C++的各种语言特征和有效使用这一语言的程序设计技术。书中也用了大量的篇幅,在标准库以及一般软件开发的环境下,讨论了使用C++语言编程和组织程序的许多高级技术。本书内容覆盖了C++语言及其程序设计的各个方面,其技术深度与广度是举世公认的。
然而,作者讨论的并不仅是C++语言及其程序设计。本书的讨论远远超出这一范围,第四部分用了大量的篇幅去讨论软件开发过程及其问题。即使是在介绍C++语言及其程序设计的具体问题时,作者也常在程序结构、设计和软件开发的大环境下,提出自己的许多认识。作者有很强的计算机科学与技术基础,在系统软件开发方面极富经验,他所提出的观点和意见值得每个在这个领域中工作的人的重视。
当然,重视并不是盲从。在Stroustrup的两本关于C++的重要著作(本书和《C++语言的设计与演化》(已由机械工业出版社出版))中,都有这样一句话使我印象深刻:希望读者带着一种健康的怀疑态度。看来这是作者深深铭刻在心的一种思想,也特别值得国内每个从事信息技术,或者努力向这个方向发展的人注意。从来就没有什么救世主,Stroustrup不是在传道,他只是在总结和论述自己在这个领域中工作的经验。请不要将本书中的东西作为教条,那也一定是本书作者所深恶痛绝的。
许多人说本书比较难读,这种说法有一定道理。真正理解本书的一般性内容需要花一些时间,融会贯通则更需要下功夫。理解本书的内容不仅需要去读它,还需要去实践。问题是,花这个时间值吗?作者在讨论C++语言的设计时提出了一个观点:你从C++语言中的收获大致与在学习实践这个语言的过程中所付出的努力成正比;而且C++是一个可以伴随你成长的语言。同样的话也适用于本书。如果你致力于将自己发展成一个职业的程序员,或者要在计算机方面的技术领域中长期工作下去,我认为,你从本书中的收获大致也会与你所花的时间成正比,这本书也是一本能够伴随你成长的书。

相关百科
返回顶部
产品求购 求购