《C++程式设计基础教程》是由郑莉、董渊编着,2010年清华大学出版社出版的国家精品课程配套教材、清华大学计算机基础教育课程系列教材。该教材适用于各类学校的C++语言程式设计课程。
全书共10章,主要内容包括绪论,C++简单程式设计,函式,类与对象,数据的共享与保护,数组、指针与字元串,继承与派生,多态性,流类库与输入输出,异常处理。
基本介绍
- 书名:C++程式设计基础教程
- 作者:郑莉、董渊
- ISBN:9787302233619
- 类别:国家精品课程配套教材
- 页数:336页
- 出版社:清华大学出版社
- 出版时间:2010年8月1日
- 装帧:平装
- 开本:16开
- 字数:515千字
- CIP核字号:2010145980
成书过程
修订过程
该教材是《C++语言程式设计(第4版)》的姊妹篇。《C++语言程式设计》第1版于1999年出版,第2版于2001年出版,第3版于2003年出版。在前三版基础上,作者听取了读者和同行的建议,参考了最新(截止2010年8月)的资料,并根据作者在授课过程中的经验编写而成。
一、该教材与《C++语言程式设计(第3版)》相比,主要在以下方面作了修订:
- 去掉了原来的第9、10、12、13章;
- 从第4章开始,每章编写了新的综合实例“个人银行账户管理程式”;
- 部分例题有更新。
二、该教材与《C++语言程式设计(第4版)》相比,去掉了第9、10、12章,去掉了每章的“深度探索”一节。
该教材由郑莉、董渊编着。
出版工作
2010年8月1日,该教材由清华大学出版社出版。
责任编辑 | 责任校对 | 责任印製 |
---|---|---|
谢琛、薛阳 | 白蕾 | 何芊 |
内容简介
全书共10章。
第1章绪论:从发展的角度概要介绍了面向对象程式设计语言的产生和特点,面向对象方法的由来和主要的基本概念,并简单介绍了什幺是面向对象的软体工程。最后介绍了信息在计算机中的表示和存储以及程式的开发过程。
第2章C++简单程式设计:讲述C++程式设计的基础知识。首先简要介绍C++语言的发展历史及其特点;接着学习构成C++语句的基本部分,包括字元集、关键字、标识符、操作符等;还有C++的基本数据类型和自定义数据类型以及算法的控制结构,包括顺序、选择和循环结构。“深度探索”介绍变数的实现机制和C++表达式的执行原理。
第3章函式:讲述C++语言的函式。在面向对象的程式设计中,函式对处理问题过程的基本抽象单元,是对功能的抽象。同时,使用函式也为代码的重用提供了技术上的支持。教材主要从套用的角度讲述各种函式的定义和使用方法。“深度探索”介绍运行栈与函式调用的执行、函式声明与类型安全。
第4章类与对象:首先介绍面向对象程式设计的基本思想及其主要特点,包括抽象、封装、继承和多态;接着围绕数据封装这一特点,着重讲解面向对象设计方法的核心概念-类,其中包括类的定义、实现以及如何利用类来解决具体问题;最后,简单介绍了如何用UML语言描述类的特性。“深度探索”介绍位域、用构造函式定义类型转换,以及对象作为函式参数和返回值的传递方式。
第5章数据的共享与保护:讲述标识符的作用域和可见性及变数、对象的生存期;使用局部变数、全局变数、类的数据成员、类的静态成员和友元来实现数据共享,共享数据的保护,以及使用多档案结构来组织和编写程式解决较为複杂的问题。“深度探索”介绍常成员函式的声明原则、代码的编译连线与执行过程。
第6章数组、指针与字元串:讨论数组、指针与字元串。数组和指针是C++语言中最常用的複合(构造)类型数据,是数据和对象组织、表示的最主要手段,也是组织运算的有力工具。该章首先介绍数组、指针的基本概念动态存储分配以及动态数组对象。接着围绕数据和对象组织这一问题,着重讲解如何通过使用数组和指针解决数据、函式以及对象之间的联繫和协调。对于字元串及其处理,该章重点介绍string类。“深度探索”介绍指针与引用的联繫、指针的安全性隐患及其应对方案,以及const_cast的套用。
第7章继承与派生:讲述类的继承特性。围绕派生过程,着重讨论不同继承方式下的基类成员的访问控制问题、添加构造函式和析构函式。接着讨论在较为複杂的继承关係中,类成员的唯一标识和访问问题。“深度探索”介绍组合与继承的区别与联繫、派生类对象的记忆体布局,以及基类向派生类的转换及其安全性问题。
第8章多态性:讲述类的另一个重要特性-多态性。多态是指同样的讯息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函式的再抽象。C++语言支持的多态有多种类型,重载(包括函式重载和运算符重载)和虚函式是其中主要的方式。“深度探索”介绍多态类型与非多态类型的区别、运行时类型识别机制,以及虚函式动态绑定的实现原理。
第9章流类库与输入输出:讲述流的概念,然后介绍流类库的结构和使用。就像C语言一样,C++语言中也没有输入输出语句。但C++编译系统带有一个面向对象的I/O软体包,它就是I/O流类库。“深度探索”介绍宽字元、宽字元串与宽流,以及对象的串列化问题。
第10章异常处理:讲述异常处理的基本思想、C++异常处理的实现、异常处理的语法、异常接口声明、异常处理中的构造与析构、标準程式库异常处理等内容。
教材目录
第1章 绪论1 1.1 电脑程式设计语言的发展1 1.1.1 机器语言与彙编语言1 1.1.2 高级语言2 1.1.3 面向对象的语言2 1.2 面向对象的方法2 1.2.1 面向对象方法的由来3 1.2.2 面向对象的基本概念4 1.3 面向对象的软体开发5 1.3.1 分析5 1.3.2 设计5 1.3.3 编程6 1.3.4 测试6 1.3.5 维护6 1.4 信息的表示与存储6 1.4.1 计算机的数字系统6 1.4.2 几种进位记数制之间的转换8 1.4.3 信息的存储单位10 1.4.4 二进制数的编码表示11 1.4.5 定点数和浮点数15 1.4.6 数的表示範围15 1.4.7 非数值信息的表示16 1.5 程式开发的基本概念16 1.5.1 基本术语16 1.5.2 完整的程式过程17 1.6 小结18 习题18 第2章 C++简单程式设计19 2.1 C++语言概述19 2.1.1 C++的产生19 2.1.2 C++的特点20 2.1.3 C++程式实例20 2.1.4 字元集21 2.1.5 词法记号22 2.2 基本数据类型和表达式23 2.2.1 基本数据类型24 2.2.2 常量25 2.2.3 变数27 2.2.4 符号常量28 2.2.5 运算符与表达式28 2.2.6 语句37 2.3 数据的输入与输出37 2.3.1 I/O流37 2.3.2 预定义的插入符和提取符37 2.3.3 简单的I/O格式控制38 2.4 算法的基本控制结构39 2.4.1 用if语句实现选择结构39 2.4.2 多重选择结构41 2.4.3 循环结构44 2.4.4 循环结构与选择结构的嵌套49 2.4.5 其他控制语句52 2.5 自定义数据类型52 2.5.1 typedef声明53 2.5.2 枚举类型enum53 2.6 小结55 习题56 第3章 函式60 3.1 函式的定义与使用60 3.1.1 函式的定义60 3.1.2 函式的调用61 3.1.3 函式的参数传递74 3.2 内联函式77 3.3 带默认形参值的函式78 3.4 函式重载80 3.5 C++系统函式82 3.6 小结85 习题85 第4章 类与对象88 4.1 面向对象程式设计的基本特点88 4.1.1 抽象88 4.1.2 封装89 4.1.3 继承90 4.1.4 多态90 4.2 类和对象90 4.2.1 类的定义91 4.2.2 类成员的访问控制92 4.2.3 对象93 4.2.4 类的成员函式94 4.2.5 程式实例96 4.3 构造函式和析构函式97 4.3.1 构造函式97 4.3.2 複製构造函式99 4.3.3 析构函式103 4.3.4 程式实例104 4.4 类的组合106 4.4.1 组合106 4.4.2 前向引用声明110 4.5 UML图形标识112 4.5.1 UML简介112 4.5.2 UML类图113 4.6 结构体和联合体119 4.6.1 结构体119 4.6.2 联合体120 4.7 综合实例--个人银行账户管理程式123 4.7.1 类的设计123 4.7.2 源程式及说明124 4.8 小结127 习题127 第5章 数据的共享与保护129 5.1 标识符的作用域与可见性129 5.1.1 作用域129 5.1.2 可见性133 5.2 对象的生存期133 5.2.1 静态生存期133 5.2.2 动态生存期134 5.3 类的静态成员136 5.3.1 静态数据成员137 5.3.2 静态函式成员139 5.4 类的友元141 5.4.1 友元函式143 5.4.2 友元类144 5.5 共享数据的保护146 5.5.1 常对象146 5.5.2 用const修饰的类成员147 5.5.3 常引用149 5.6 多档案结构和编译预处理命令151 | 5.6.1 C++程式的一般组织结构151 5.6.2 外部变数与外部函式153 5.6.3 标準C++库155 5.6.4 编译预处理156 5.7 综合实例--个人银行账户管理程式159 5.8 小结163 习题163 第6章 数组、指针与字元串165 6.1 数组165 6.1.1 数组的声明与使用165 6.1.2 数组的存储与初始化167 6.1.3 数组作为函式参数170 6.1.4 对象数组171 6.1.5 程式实例173 6.2 指针176 6.2.1 记忆体空间的访问方式176 6.2.2 指针变数的声明177 6.2.3 与地址相关的运算“”和“&" 177 6.2.4 指针的赋值178 6.2.5 指针运算180 6.2.6 用指针处理数组元素182 6.2.7 指针数组183 6.2.8 用指针作为函式参数186 6.2.9 指针型函式187 6.2.10 指向函式的指针188 6.2.11 对象指针190 6.3 动态记忆体分配195 6.4 用vector创建数组对象201 6.5 深複製与浅複製203 6.6 字元串206 6.6.1 用字元数组存储和处理字元串207 6.6.2 string类207 6.7 综合实例--个人银行账户管理程式211 6.8 小结218 习题218 第7章 继承与派生221 7.1 类的继承与派生221 7.1.1 继承关係举例221 7.1.2 派生类的定义222 7.1.3 派生类生成过程224 7.2 访问控制226 7.2.1 公有继承226 7.2.2 私有继承228 7.2.3 保护继承230 7.3 类型兼容规则232 7.4 派生类的构造和析构函式234 7.4.1 构造函式235 7.4.2 複製构造函式237 7.4.3 析构函式238 7.5 派生类成员的标识与访问240 7.5.1 作用域分辨符240 7.5.2 虚基类246 7.5.3 虚基类及其派生类构造函式248 7.6 程式实例--用高斯消去法解线性方程组249 7.6.1 算法基本原理249 7.6.2 程式设计分析250 7.6.3 源程式及说明251 7.6.4 运行结果与分析256 7.7 综合实例--个人银行账户管理程式257 7.7.1 问题的提出257 7.7.2 类设计258 7.7.3 源程式及说明259 7.7.4 运行结果与分析264 7.8 小结265 习题266 第8章 多态性268 8.1 多态性概述268 8.1.1 多态的类型268 8.1.2 多态的实现268 8.2 运算符重载269 8.2.1 运算符重载的规则270 8.2.2 运算符重载为成员函式271 8.2.3 运算符重载为非成员函式275 8.3 虚函式277 8.3.1 一般虚函式成员278 8.3.2 虚析构函式281 8.4 纯虚函式与抽象类283 8.4.1 纯虚函式283 8.4.2 抽象类284 8.5 程式实例--变步长梯形积分算法求解函式的定积分286 8.5.1 算法基本原理286 8.5.2 程式设计分析287 8.5.3 源程式及说明288 8.5.4 运行结果与分析291 8.6 综合实例--对个人银行账户管理程式的改进291 8.7 小结297 习题298 第9章 流类库与输入输出300 9.1 I/O流的概念及流类库结构300 9.2 输出流302 9.2.1 构造输出流对象302 9.2.2 使用插入运算符和操纵符303 9.2.3 档案输出流成员函式307 9.2.4 二进制输出档案309 9.2.5 字元串输出流310 9.3 输入流311 9.3.1 构造输入流对象311 9.3.2 使用提取运算符312 9.3.3 输入流操纵符312 9.3.4 输入流相关函式312 9.3.5 字元串输入流316 9.4 输入输出流317 9.5 综合实例--对个人银行账户管理程式的改进317 9.6 小结323 习题323 第10章 异常处理325 10.1 异常处理的基本思想325 10.2 C++异常处理的实现325 10.2.1 异常处理的语法326 10.2.2 异常接口声明328 10.3 异常处理中的构造与析构329 10.4 标準程式库异常处理330 10.5 综合实例--对个人银行账户管理程式的改进333 10.6 小结336 习题336 |
(注:目录排版顺序为从左列至右列)
教学资源
- 配套教材
该教材有配套教材——《C++程式设计基础教程(学生用书)》。
书名 | 书号 | 出版社 | 出版时间 | 作者 |
---|---|---|---|---|
《C++程式设计基础教程(学生用书)》 | 9787302253532 | 清华大学出版社 | 2011.06.01 | 郑莉 |
- 课程资源
该教材配有电子教案(PPT档案)。
教材特色
《C++程式设计基础教程》针对程式设计的初学者,以面向对象的程式设计思想为主线介绍C++语言,引导读者以最自然的方式,将面向对象的思维方法运用到程式设计中。
全书以面向对象的程式设计方法贯穿始终,每一章都是首先阐述面向对象的程式设计思想和方法,由实际问题入手,然后引出必要的语法知识,在讲解语法时着重从程式设计方法学的角度讲述其意义和用途。该教材的宗旨是,不仅要使读者掌握C++语言本身,而且要能够对现实世界中较简单的问题及其解决方法用计算机语言进行描述。
作者简介
郑莉,女,硕士,清华大学计算机科学与技术系教授,主要研究方向为计算机套用、计算机教育、教育信息技术。
董渊,男,博士,清华大学计算机科学与技术系副教授,主要研究方向为嵌入式作业系统、编译系统、基于语言的可信软体等。