C++程序设计语言(普通高等教育“十一五”国家级规划教材)

分類: 图书,教材教辅与参考书,大学,计算机专业,
品牌: 李雁妮
基本信息·出版社:西安电子科技大学出版社
·页码:406 页
·出版日期:2009年
·ISBN:7560621511/9787560621517
·条形码:9787560621517
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:普通高等教育“十一五”国家级规划教材
产品信息有问题吗?请帮我们更新产品信息。
内容简介《C++程序设计语言》分三部分,共16章。第一部分对C++语言的基本机制,即对C++语言中用于支持面向过程与面向模块化程序设计的语言机制进行了较为准确与全面的介绍;第二部分重点介绍了C++支持面向对象与类属程序设计的各种语言机制,同时,在该部分对C++的异常处理机制进行了较为详尽的介绍;第三部分对C++标准模板库STL进行了简要阐述,由于程序一般都要进行字符串与输入/输出处理,因此,在该部分重点对标准类库中的string类和C++的I/O类进行了较具体的介绍。
《C++程序设计语言》针对计算机专业的本科生编写。书中注有星号的章节为C++中较深入的一些问题,在教学中可视教学时数与教学对象进行适当取舍。《C++程序设计语言》除作为本科生C++程序设计的教材之外,还可供计算机或电子类相关专业的研究生或工程技术人员参考学习。
目录
第一部分 C++语言的基本机制
第1章 绪论
1.1 C++语言的发展历史及特点
1.1.1 C++语言的发展历史
1.1.2 C++语言的特点
1.2 学习C++语言的注意事项
1.2.1 如何学习C++
1.2.2 如何使用本教材
1.3 C++语言中一些重要的程序设计理念
小结
练习题
第2章 C++语言概述
2.1 C++语言及程序设计范型
2.1.1 C++语言的概念
2.1.2 程序设计范型
2.1.3 第一个C++程序及C++程序结构
2.2 过程程序设计范型
2.2.1 过程程序设计范型介绍
2.2.2 变量和算术运算符
2.2.3 条件判断与循环
2.2.4 指针与数组
2.3 模块化程序设计范型
2.4 数据抽象
2.5 面向对象程序设计范型
2.6 类属/通用程序设计范型
小结
练习题
第3章 类型与声明
3.1 类 型
3.2 C++中的基本数据类型
3.2.1 布尔类型
3.2.2 字符类型
3.2.3 整数类型
3.2.4 浮点类型
3.2.5 C++数据类型存储量的大小
3.3 void类型
3.4 枚举类型
3.5 类型的声明与定义
3.5.1 声明的语法规则
3.5.2 C++中的标识符
3.5.3 标识符的作用域
3.5.4 typedef
3.6 类型转换
小结
练习题
第4章 运算符与语句
4.1 C++运算符概述
4.1.1 算术运算符和自增、自减运算符
4.1.2 关系和逻辑运算符
4.1.3 位运算符
4.1.4 内存申请与释放运算符new和delete
4.1.5 赋值运算符
4.1.6 类型转换运算符
4.1.7 C++运算符概览及其优先级次序
4.2 C++语句
4.2.1 表达式语句和空语句
4.2.2 注释语句及意义
4.2.3 复合语句
4.2.4 选择判断语句
4.2.5 循环语句
4.2.6 跳转语句
小结
练习题
第5章 指针、数组和结构
5.1 指针
5.1.1 指针与指针变量
5.1.2 为什么要使用指针变量
5.1.3 指针变量的声明与定义
5.1.4 指针变量的操作
5.1.5 常量零(0)
5.2 数组
5.2.1 数组的定义与初始化
5.2.2 字符串字面值
5.3 指向数组的指针
5.3.1 指向一维数组的指针
5.3.2 指向多维数组的指针
5.3.3 取数组元素及数组的遍历
5.4 指向函数的指针
5.5 指向void*的指针
5.6 常量
5.7 引用
5.8 结构
小结
练习题
第6章 函数
6.1 函数的声明
6.1.1 函数接口/原型声明
6.1.2 函数的定义
6.2 函数的参数传递
6.3 函数的返回值
6.4 函数名的过载/重载
6.4.1 函数名过载/重载的基本概念
6.4.2 重载函数的匹配规则
6.4.3 重载函数与函数的返回类型
6.4.4 重载与作用域
6.5 缺省的函数参数值
6.6 递归
6.6.1 递归的基本概念
6.6.2 递归的定义及递归函数的编写模式
6.7 参数数目可变的函数
6.8 函数指针
6.9 综合示例
小结
练习题
第7章 名字空间与异常处理
7.1 模块与接口的基本概念
7.2 名字空间
7.2.1 名字空间的基本概念
7.2.2 名字空间中的名字解析
7.2.3 模块的多重接口
7.3 异常处理
7.4 综合示例
小结
练习题
第8章 源文件和程序
8.1 分别编译
8.2 链接
8.2.1 链接与一致性的基本概念
8.2.2 头文件
8.2.3 #include指令
8.2.4 用户头文件内容的设计
8.3 头文件的有效使用
8.4 命令行参数
8.5 程序
8.5.1 程序的执行
8.5.2 程序的终止
小结
练习题
第二部分 C++的抽象机制
第9章 类与对象
9.1 类的基本概念
9.2 类中成员
9.2.1 类中的成员
9.2.2类的访问控制
9.2.3 类的构造函数
9.2.4 类的静态成员
9.2.5对象的拷贝
9.2.6 常量(Const或称只读)成员函数
9.2.7 对象的自身引用——this
9.3 定义有效、高质量的类
9.4 对象
9.4.1 对象是什么
9.4.2 C++中对象的类别
9.4.3 对象的析构——析构函数
9.4.4 默认构造函数
9.4.5 几种主要类别对象的构造与析构
9.4.6 对象的构造与析构次序
9.5 综合示例
小结
练习题
第10章 操作符重载
10.1 概述
10.2操作符重载
10.2.1 二元操作符的重载
10.2.2 一元操作符的重载
10.3 类型转换操作符
10.3.1 类型转换函数
10.3.2 歧义性(二义性)问题
10.4 友员
10.5 大型对象
10.6 类中应具有的基本操作
10.7 几种特殊操作符的重载
10.7.1 下标运算符的重载
10.7.2 函数调用操作符的重载
10.7.3 指针/指向操作符的重载
10.7.4 自增、自减操作符的重载
10.7.5 流输入与流输出操作符的重载
10.8 综合示例
小结
练习题
第11章 继承与多态
11.1 概述
11.2 子类/派生类
11.2.1 子类/派生类与继承的基本概念.
11.2.2 子类对象的存储结构
11.2.3 子类中的成员
11.2.4 子类的构造与析构函数
11.2.5 子类对象拷贝
11.2.6 public、protected和private继承
11.3 虚函数与多态性
11.3.1 类型域
11.3.2 虚拟函数
11.3.3 抽象基类与实例类
11.3.4 多态
11.3.5 虚拟的析构函数
*11.4 运行时的类型识别
11.4.1 dynamic_cast运算符
11.4.2 type_id运算符
*11.5 指向类成员的指针
11.5.1 指向类成员的指针
11.5.2 指向类的成员函数指针的应用场合
11.6 多重继承
11.7 综合示例
小结
练习题
第12章 模板
12.1 概述
12.2 类模板
12.2.1 类模板的定义
12.2.2 类模板参数及其限制
12.3 函数模板
12.3.1 函数模板的定义
12.3.2 函数模板的重载
12.3.3 函数调用的匹配原则
12.3.4 编写函数模板时的注意事项
12.4 模板与继承
12.5 综合示例
小结
练习题
第13章 异常处理
13.1 概述
13.2 C++异常处理结构try、throw和catch
13.2.1 抛出异常
13.2.2 重新抛出异常
13.2.3 捕获所有的异常
13.3 异常类层次
*13.4 捕获new操作所产生的异常
*13.5 C++标准库异常层次
小结
练习题
第三部分 C++标准模板库STL简介
第14章 string类
14.1 string概述
14.2 string类的构造函数与析构函数
14.3 string类重载的操作符
14.4 string类的成员函数
14.5 string的基本操作
14.5.1 元素访问
14.5.2 赋值
14.5.3 从string转换到C风格的字符串
14.5.4 字符串的比较
14.5.5 附加与插入
14.5.6 查找子串
14.5.7 替换
14.5.8 求子串
14.5.9 string对象的大小和容量
14.5.10 输入输出
14.6 C风格的字符串
14.6.1 C字符串操作函数
14.6.2 将数值字符串转换到数值的函数
14.6.3 字符分类
14.7 迭代器
14.8 字符串流处理
小结
练习题
第15章 C++输入/输出系统基础
15.1 C++中的流概述
15.1.1 C++的输入/输出流类库中的头文件
15.1.2 输入/输出流类和对象
15.2 输出流
15.3 输入流
15.3.1 流读取运算符
15.3.2 用于输入的一些成员函数
15.4 成员函数read和write的无格式输入/输出
15.5 流操纵算子
15.5.1 设置整数流的基数
15.5.2 设置浮点数精度
15.5.3 设置输出域宽
小结
练习题
第16章 标准模板库STL简介
16.1 STL概述
16.1.1 容器
16.1.2 算法
16.1.3 迭代器
16.1.4 其它STL元素
16.2 容器类
16.3 STL类的一般操作原理
16.4 vector容器
16.4.1 通过迭代器访问vector矢量中的元素
16.4.2 vector的其它成员函数
16.4.3 在vector中存储自定义类型的对象
16.5 list容器
16.6 deque双向队列
16.7 关联容器
16.7.1 map关联容器类
16.7.2 set和mulfiset关联容器类
16.8容器适配器
16.8.1 stack适配器
16.8.2 queue适配器
16.8.3 priority_queue适配器
16.9 算法
16.9.1 fill、fill_n、generate与generate_n算法
16.9.2 equal、mismatch和lexicographica_compare算法
16.9.3 remove、remove_if、remove_copy和remove_copy_if算法
16.9.4 replace、replace_if、replace_copy和replace_copy_if算法
16.9.5 一些常用的数学算法
16.9.6 基本查找与排序算法
16.9.7 swap、iter_swap和swap_ranges算法
16.9.8 copy_backward、mergeunique和reverse算法
16.9.9 inplace_merge、unique_copy和reverse_copy算法
16.9.10 集合操作
16.9.11 lower bound、upper_bound和equal_range算法
16.9.12 堆排序
16.9.13 min和max算法
16.10 函数对象
16.10.1 一元函数对象与二元函数对象
16.10.2 STL内置的函数对象
16.10.3 绑定器
参考文献
……[看更多目录]
序言本书作者均长期致力于C/C++语言的教学与科研工作,其中陈平教授为ISO C++语言标准化技术专家、教育部计算机专业教学指导委员会委员,本书是他及所带领的C++课程组成员在长期的教学、科研实践中所形成的智慧与成果的结晶。
C++是一种支持多种程序设计范型、优秀的通用程序设计语言。目前,国内多家出版社已陆续出版了多种C++程序设计语言教材,这些教材都各具特色,但总的来说:
(1)已有教材内容没有完全涵盖最新的2004年CCSE(Computing Curricula-Software Engineering,计算机软件工程学科)和CSEC(China Software Engineering Curricula,中国软件工程学科)在相应课程中的知识点,部分内容缺失或深度不够。
(2)已有教材内容大多仅立足于语言语法本身,没有将其内容提升到引导与培养学生正确、适当地使用各种语言机制的高度上,即在内容的组织与选取上对如何培养、训练学生成为一个优秀的C++程序员考虑不够。
(3)C++是支持多种程序设计范型且广泛使用的高级程序设计语言之一。大多数教材没有清楚地阐述C++支持多种程序设计范型这一特征,亦没有完整地阐述C++支持多种程序设计范型的各种语言机制,这易使读者不知或误用各种语言机制。
(4)已有教材的内容大多缺少实际软件项目的研发成果,内容及示例显得空泛。
目前,国外有多种C++经典教材,其典型代表为B.Strostrup所编写的《C++Programming Language》和Bruce Eckel所编写的《Thinking in C++》等。基于我国国情,上述国外原版教材并不完全适宜用作我国大多数院校本科低年级学生的C++课程教材,原因如下:
(1)教材为英文,并具有相当的深度、难度,对国内大多数院校本科低年级学生来讲,难度太大;其翻译版亦普遍存在译文质量不高、信息损失等问题。
(2)教材并非按CCSE和CSEC编写,且上述两本原版著作是按照全面;深入阐述C++语言特性,培养高级C++程序员、系统分析员这一宗旨而撰写的,故部分章节内容不适合作为本科生低年级学生的C++课程教材。
基于上述原因,作者在对国内外C++教材进行了大量阅读、研究、实践的基础上,根据CCSE和CSEC编写了这本适合我国国情并与软件人才培养目标接轨,能准确阐述C++各种语言特性、用法,且包含作者长期教学与科研成果的《C++程序设计语言》。
文摘插图:

Biarne Stroustrup博士上述名言为我们如何学习及学好C++语言指明了道路。在学习C++语言的时候,应注意如下几点:
(1)学习C++语言的目的是要将它作为一种工具很好地应用于软件系统的开发与维护,而不能仅限于了解C++语言的很多语法细节,却不去关注如何正确地使用它。
(2)程序设计风格或称程序设计范型(Programming Styles/Paradigm)通常由思维方式和语言的支持机制所决定,而不同的应用领域要求的思维方式不同,因而程序设计风格或范型不同,对语言的支持要求也不同。因此应切记:C++语言是支持多种程序设计风格/范型的一种通用的、混合性程序设计语言。在学习及使用该语言时一定要注意其各种语言机制到底支持哪种程序设计风格/范型,以避免对C++语言机制的乱用与误用。
(3)C++同时支持多种程序设计风格/范型的能力,使其应用领域很宽,但其支持的语言机制绝对不是“放之四海而皆准”的。因此,在学习C++时,一定要注意各种语言机制适用及不适用的场合。
(4)学习C++语言的途径不是唯一的,学习方法及门坎的高低亦因人而异,这些都与学习者已有的基础和预定的目标有关。我们期望学习者是为了更好地进行程序设计和软件设计而学习C++的。
(5)C++是一个相对复杂的语言,但不需要在掌握了这种语言的所有语言特性和技术内涵之后才开始真正使用它。C++可以在多个不同的专业层次上使用,所以读者可以通过实践循序渐进地学习与掌握C++。
(6)跳过C语言的学习而直接学习C++语言是值得提倡的一种学习方法。C枓更安全,表现力更强,又减少了对低层技术的关注要求,因此比C语言更容易使用与掌握。有了C语言的基础再学C++语言,虽然入门较快,但实践证明最终很难摆脱C语言的思维方式,也很难从用C++写出C程序这一误区中走出来。
(7)在学习过程中,读者还可通过多种途径学习与实践C++,如利用一些可用的工具、程序库和软件开发环境,通过大量的教科书、手册、杂志、BBS、邮件组、会议和课程等学习C++并得到其语言的最新发展信息。
最后,至关重要的是在学习的过程中要大量地阅读优秀的C++源代码,从中吸取经验,获取灵感。学习中一定要加大实践力度,实践出真知!只有通过阅读一模仿一实践一再实践的途径,才能深入学习和掌握C++。1.2.2 如何使用本教材
本书的内容共分为三大部分。第一部分共计8章,重点阐述C++语言的基本机制。这一部分阐述了C++
……[看更多书摘]