C++程序设计(第2版) 封面

C++程序设计(第2版)

评分 2.9
字数
11.7万字
章节数
208
ISBN
9787115452603

标签

内容简介

本书是为已有C程序设计基础、想学习C++面向对象程序设计的读者编写。全书共分9章:第 1、2章介绍了面向对象程序设计方法及C++程序设计语言基础;第3~6章围绕面向对象程序设计的数据封装和隐藏、继承性和多态性三个特征,分别介绍了类和对象、构造函数与析构函数、静态成员、友元类和友元函数、继承和派生、多态性等;第7~9章分别介绍了函数模板和类模板、文件和流、异常处理。

编辑推荐

宋春花老师的《C++程序设计(第2版)》是一本在众多C++入门教材中定位清晰、颇具匠心的著作。相较于第一版,本书最大的亮点在于紧跟C++11标准的普及趋势,在保留经典语法教学核心的同时,有机融入了auto类型推导、基于范围的for循环、智能指针初步概念等现代C++特性。这并非简单的知识点堆砌,而是体现了作者引导学生从“传统C++”向“现代C++”平稳过渡的教学设计思路。

从内容编排上看,本书严格遵循了从过程化到对象化的经典学习路径。前几章扎实的面向过程编程基础训练,为后续理解类和对象封装数据与行为的必要性做了充分铺垫。书中的代码示例短小精悍,多围绕具体概念设计,避免了庞大案例带来的认知负担,非常适合初学者逐步构建知识体系。每一章后的习题设计也颇具巧思,既有巩固基础的语法练习,也有引导思考的小型综合题目,能有效检验学习成果。

作为人民邮电出版社的经典教材系列之一,本书的严谨性和准确性值得信赖。作者宋春花老师拥有多年的高校一线教学经验,其笔触平实,解释力求透彻,能将复杂的概念拆解为易于理解的步骤。对于自学者而言,这是一位耐心而系统的“书面导师”;对于高校学生,它则是一本可靠的课内补充读物或复习资料。虽然本书深度上未涉及模板元编程等高级主题,但其打下的坚实基础,正是后续阅读《Effective C++》等经典进阶著作的必备前提。总体而言,这是一本在“经典”与“现代”、“理论”与“实践”之间取得良好平衡的入门佳作。

适合谁读

适合

  • 计算机相关专业的本科或高职院校学生,作为C++程序设计的入门或同步教材。
  • 有一定C语言基础,希望转向C++或了解面向对象编程的程序员。
  • 准备考研或复试,需要系统复习C++语言核心概念的考生。
  • 对编程感兴趣,希望通过一本结构清晰、讲解耐心的教材自学C++的初学者。

不适合

  • 寻求C++17/20等最新标准特性详解或高级技巧(如模板元编程、并发编程)的资深开发者。
  • 希望快速掌握特定领域开发(如游戏、图形学)并寻找大量项目实战案例的急进型学习者。

阅读建议

  1. 建议按照章节顺序学习,切勿跳过面向过程的基础部分,扎实的基本功是理解后续对象模型的关键。
  2. 阅读时务必动手实践书中的每一个示例代码,并尝试对其进行修改,观察运行结果的变化,这是学习编程最有效的方式。
  3. 在学到类和对象章节时,可以尝试用C++11的新特性(如auto)重写前面的部分练习代码,对比体会现代C++带来的简洁与安全。

出版社简介

人民邮电出版社 中国 · 成立于 1953 年

人民邮电出版社以科技、计算机与信息通信类图书见长,并由此延伸至摄影、艺术、软件学习与励志成长等门类,形成较为多元的出版方向。库内图书既涵盖《重构与模式(修订版)》《华为交换机学习指南(第二版)》等计算机与通信技术读物,也收录《小王子(中英法彩绘典藏纪念版)》《了不起的盖茨比》《假如给我三天光明》等双语典藏类作品;《北京十年:1980-1990》与《鬼刀 WLOP个人插画作品集》则体现其在摄影与艺术领域的布局。作者资源包括安东尼·圣埃克苏佩里、海伦·凯勒、Joshua Kerievsky、王达、张兆增与WLOP等。

目录

  1. 版权信息
  2. 内容提要
  3. 第2版前言
  4. 第1章 面向对象程序设计概述
  5. 1.1 面向对象程序设计方法的发展历史
  6. 1.2 面向过程和面向对象程序设计方法概述
  7. 1.2.1 面向过程程序设计
  8. 1.2.2 面向对象程序设计
  9. 1.3 面向对象程序设计的基本术语
  10. 1.4 面向对象程序设计的基本特征
  11. 1.4.1 抽象性
  12. 1.4.2 封装性
  13. 1.4.3 继承性
  14. 1.4.4 多态性
  15. 1.5 面向对象程序设计语言
  16. 1.5.1 从C到C++
  17. 1.5.2 其他的面向对象程序设计语言
  18. 1.6 基于Visual Studio 2010的C++应用程序的开发
  19. 小结
  20. 习题
  21. 第2章 C++基础
  22. 2.1 C++程序的组成部分
  23. 2.2 命名空间
  24. 2.2.1 什么是命名空间
  25. 2.2.2 C++中的命名空间定义
  26. 2.2.3 C++中的命名空间的使用
  27. 2.2.4 std命名空间
  28. 2.3 C++数据的输入/输出
  29. 2.3.1 C++的流
  30. 2.3.2 cin和流提取运算符>>
  31. 2.3.3 cout和流插入运算符<<
  32. 2.4 引用
  33. 2.5 函数
  34. 2.5.1 函数原型
  35. 2.5.2 重载函数
  36. 2.5.3 带有默认参数的函数
  37. 2.5.4 内联函数
  38. 2.5.5 引用参数和返回引用
  39. 2.6 变量的作用域与可见性
  40. 2.6.1 作用域
  41. 2.6.2 可见性
  42. 2.7 变量的生存期
  43. 2.7.1 静态生存期
  44. 2.7.2 动态生存期
  45. 2.8 const常量
  46. 2.8.1 常量的定义
  47. 2.8.2 const和#define
  48. 2.9 动态内存分配和释放
  49. 2.9.1 new运算符
  50. 2.9.2 delete运算符
  51. 2.10 编译预处理
  52. 2.10.1 宏定义
  53. 2.10.2 文件包含
  54. 2.10.3 条件编译
  55. 2.11 文件的输入和输出
  56. 2.11.1 文件的打开和关闭
  57. 2.11.2 文件的输入和输出
  58. 小结
  59. 习题
  60. 第3章 类和对象
  61. 3.1 类和对象的概念
  62. 3.1.1 类的基本概念
  63. 3.1.2 对象的基本概念
  64. 3.2 类的定义
  65. 3.2.1 类的定义格式
  66. 3.2.2 类的成员
  67. 3.2.3 类成员访问控制权限
  68. 3.2.4 成员函数的实现方式
  69. 3.2.5 将成员函数设置为内联函数
  70. 3.2.6 成员函数重载
  71. 3.3 对象的创建与使用
  72. 3.3.1 对象的定义
  73. 3.3.2 对象成员的访问
  74. 3.4 构造函数
  75. 3.4.1 构造函数的定义和功能
  76. 3.4.2 默认构造函数
  77. 3.4.3 无参构造函数
  78. 3.4.4 构造函数的重载
  79. 3.4.5 带默认参数的构造函数
  80. 3.4.6 构造函数与初始化列表
  81. 3.5 析构函数
  82. 3.6 构造函数和析构函数的调用顺序
  83. 3.7 对象数组与对象指针
  84. 3.7.1 对象数组
  85. 3.7.2 对象指针
  86. 3.7.3 this指针
  87. 3.8 向函数传递对象
  88. 3.8.1 使用对象作为函数参数
  89. 3.8.2 使用对象指针作为函数参数
  90. 3.8.3 使用对象引用作为函数参数
  91. 3.8.4 三种传递方式比较
  92. 3.9 对象的赋值和复制
  93. 3.9.1 对象赋值语句
  94. 3.9.2 拷贝构造函数
  95. 3.10 类的组合
  96. 3.11 程序实例
  97. 小结
  98. 习题
  99. 第4章 类与对象的其他特性
  100. 4.1 类的静态成员
  101. 4.1.1 静态数据成员
  102. 4.1.2 静态数据成员的定义
  103. 4.1.3 静态数据成员的初始化
  104. 4.1.4 静态数据成员的使用
  105. 4.1.5 静态成员函数
  106. 4.2 友元
  107. 4.2.1 友元函数
  108. 4.2.2 友元类
  109. 4.3 类的作用域和对象的生存期
  110. 4.3.1 类的作用域
  111. 4.3.2 对象的生存期
  112. 4.4 常量类型
  113. 4.4.1 常量对象
  114. 4.4.2 常量成员
  115. 4.4.3 常量引用
  116. 4.4.4 常量指针与指向常量的指针
  117. 小结
  118. 习题
  119. 第5章 继承与派生
  120. 5.1 类的继承与派生概念
  121. 5.2 基类与派生类
  122. 5.2.1 派生类的声明
  123. 5.2.2 派生类的生成过程
  124. 5.2.3 继承方式和派生类的访问权限
  125. 5.3 派生类的构造函数和析构函数
  126. 5.3.1 派生类构造函数
  127. 5.3.2 派生类析构函数的构建
  128. 5.3.3 派生类构造函数和析构函数的执行顺序
  129. 5.4 多重继承
  130. 5.4.1 多重继承的声明
  131. 5.4.2 多重继承的构造函数和析构函数
  132. 5.4.3 多重继承中的二义性
  133. 5.4.4 虚基类
  134. 5.5 子类型与赋值兼容规则
  135. 5.5.1 子类型
  136. 5.5.2 赋值兼容规则
  137. 5.6 程序实例
  138. 小结
  139. 习题
  140. 第6章 多态性
  141. 6.1 多态性的概念
  142. 6.1.1 多态的类型
  143. 6.1.2 静态关联与动态关联
  144. 6.2 运算符重载
  145. 6.2.1 运算符重载的概念
  146. 6.2.2 运算符重载的方法
  147. 6.2.3 重载运算符的规则
  148. 6.2.4 运算符重载为成员函数和友元函数
  149. 6.2.5 重载双目运算符
  150. 6.2.6 重载单目运算符
  151. 6.2.7 重载流插入运算符和流提取运算符
  152. 6.3 不同类型数据间的转换
  153. 6.3.1 标准类型数据间的转换
  154. 6.3.2 用转换构造函数实现类型转换
  155. 6.3.3 用类型转换函数进行类型转换
  156. 6.4 虚函数
  157. 6.4.1 虚函数的定义
  158. 6.4.2 虚函数的作用
  159. 6.4.3 对象的存储
  160. 6.4.4 虚析构函数
  161. 6.5 纯虚函数与抽象类
  162. 6.5.1 纯虚函数
  163. 6.5.2 抽象类
  164. 小结
  165. 习题
  166. 第7章 模板
  167. 7.1 模板的概念
  168. 7.2 函数模板与模板函数
  169. 7.2.1 函数模板的定义和模板函数的生成
  170. 7.2.2 模板函数显式具体化
  171. 7.3 类模板与模板类
  172. 7.3.1 类模板的定义和使用
  173. 7.3.2 类模板的派生
  174. 7.3.3 类模板显式具体化
  175. 7.4 程序实例
  176. 小结
  177. 习题
  178. 第8章 文件和流
  179. 8.1 C++的输入/输出
  180. 8.2 标准输入流
  181. 8.2.1 使用cin进行输入
  182. 8.2.2 其他istream类方法
  183. 8.3 标准输出流
  184. 8.3.1 使用cout进行输出
  185. 8.3.2 使用cout进行格式化输出
  186. 8.3.3 其他ostream类方法
  187. 8.4 文件的输入和输出
  188. 8.4.1 文件的打开与关闭
  189. 8.4.2 文本文件的读写操作
  190. 8.4.3 二进制文件的读写操作
  191. 8.4.4 使用文件指针成员函数实现随机存取
  192. 8.5 程序实例
  193. 小结
  194. 习题
  195. 第9章 异常处理
  196. 9.1 异常处理概述
  197. 9.1.1 异常、异常处理的概念
  198. 9.1.2 异常处理的基本思想
  199. 9.2 异常处理的实现
  200. 9.2.1 异常处理的语句
  201. 9.2.2 异常接口声明
  202. 9.3 构造函数、析构函数与异常处理
  203. 9.4 异常匹配
  204. 9.5 标准异常及层次结构
  205. 9.6 异常处理中需要注意的问题
  206. 小结
  207. 习题
  208. 参考文献

常见问题

这本书适合零基础的小白吗?
本书是面向程序设计初学者的教材,作者讲解细致,从第一个程序开始。但“零基础”指的是无编程经验,读者仍需要具备基本的计算机操作能力和逻辑思维。如果完全没有接触过编程,前几章可能需要更多耐心和练习。
这本书的内容是否过时?它讲的C++版本是什么?
本书第2版已更新至支持C++11标准。C++11是现代C++的基石,引入了诸多提升开发效率与安全性的核心特性。对于入门和掌握C++的核心思想(面向对象、资源管理等)而言,本书内容并不过时,且为学习更新标准打下了坚实基础。
这本书和《C++ Primer》相比如何?
两者定位不同。《C++ Primer》是一本全面且深入的参考性教程,内容浩瀚,适合作为长期参考书。而本书作为国内经典的大学教材,更侧重于教学节奏和知识点的循序渐进,篇幅精炼,目标明确地带读者入门并建立核心知识框架,对初学者更友好,负担更轻。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

作者简介

宋春花 作者

宋春花,公开资料有限的程序设计类图书作者,库内收录其作品两种。从现有信息看,她的写作围绕 C++ 语言教学展开,一种是《C++程序设计(第2版)》,另一种是配套的《C++程序设计习题解析与实践教程》。前者应为系统讲解 C++ 基础与编程方法的教材,后者则侧重习题解答与实践训练,两者相互配合,构成较为完整的学习路径。她的作品分类归于编程设计,读者对象主要是初学者和在校学生。在资料不足的情况下,可以确认的是她以教材与教辅编写见长,风格偏重基础训练与动手实践,注重帮助读者通过练习巩固语法与算法思维。这样的分工在计算机基础教育中较为常见,也说明其编写思路强调知识讲授与习题演练的结合。

吕进来 作者

吕进来是一位活跃于编程教育领域的作者,公开资料有限,其生平、国籍与生卒年等个人信息暂未见于库内记录。目前库内收录其作品两种,分别为《C++程序设计(第2版)》与《C++程序设计习题解析与实践教程》,均属编程设计类读物。从书目形态看,他的写作兼顾教材讲解与练习辅导,一面系统介绍C++语言的基本概念与程序设计方法,一面通过习题解析帮助读者巩固语法要点、训练解题思路。这种“教程加实践”的搭配,适合课堂教学与自学并行使用,对入门学习者理解抽象概念、形成动手编程习惯有一定帮助。其作品面向C++初学者,内容编排注重循序渐进,在同类教材中体现出重视练习环节的特点。

同一作者

同类高分