网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 C++程序设计从入门到精通
分类
作者
出版社 清华大学出版社
下载
简介
内容推荐
本书讲解C++程序设计知识及其编程方法,包括结构化程序设计、面向对象程序设计、共用体、异常处理、模板与标准模板库、字符串处理、标准输入输出与文件处理、MFC图形界面程序设计、设计模式、编程规范、程序调试与测试等内容,并且每章都附有习题。本书的章节编排与内容以人们学习与认知过程为基础,紧扣最新国际标准,与公司的实际需求相匹配。本书采用特殊字体突出中心词,以期读者在轻松和欢乐之中迅速了解与掌握C++程序设计的知识和方法,并应用到实践中去。
  本书内容丰富易学,而且提供丰富例程和例句,既可以作为高等学校C++程序设计和面向对象程序设计等课程的基础教材,也可以作为需要使用C++语言的工程人员和科技工作者的自学参考书。
目录
第1章 绪论
1.1 C++语言简介
1.2 C++入门程序
1.2.1 常规项目操作
1.2.2 C++类C部分经典入门程序
1.2.3 C++类C部分结构化入门程序
1.2.4 C++面向对象部分入门程序
1.3 本章小结
1.4 习题
1.4.1 练习题
1.4.2 思考题
第2章 结构化程序设计
2.1 预备知识
2.1.1 标识符
2.1.2 关键字和保留字
2.1.3 文件包含语句
2.1.4 宏定义与条件编译
2.2 数据类型
2.2.1 变量定义和声明
2.2.2 布尔类型
2.2.3 整数系列类型
2.2.4 字符系列类型
2.2.5 浮点数类型
2.2.6 枚举类型
2.2.7 数组类型和基于数组的字符串
2.2.8 指针类型与动态数组
2.2.9 左值引用与右值引用
2.2.10 自动推断类型auto
2.2.11 类型别名定义typedef
2.2.12 常量属性const
2.3 运算
2.3.1 算术运算
2.3.2 关系运算
2.3.3 逻辑运算
2.3.4 位运算
2.3.5 赋值类运算
2.3.6 条件运算
2.3.7 其他运算
2.4 控制结构
2.4.1 if语句和if-else语句
2.4.2 switch语句
2.4.3 for语句
2.4.4 while语句
2.4.5 do-while语句
2.4.6 continue语句
2.4.7 break语句
2.5 模块划分
2.5.1 函数基础
2.5.2 主函数main
2.5.3 函数递归调用
2.5.4 函数指针类型
2.5.5 关键字static
2.5.6 模块划分的原则与过程
2.6 本章小结
2.7 习题
2.7.1 练习题
2.7.2 思考题
第3章 面向对象程序设计基础
3.1 类与对象
3.1.1 类声明与类定义基础
3.1.2 成员变量
3.1.3 位域
3.1.4 类对象与实例对象
3.1.5 构造函数
3.1.6 析构函数
3.1.7 成员函数
3.2 继承性
3.2.1 基本定义
3.2.2 父子类实例对象之间的兼容性
3.2.3 基本原则
3.2.4 虚拟继承
3.2.5 初始化单元和委托构造函数
3.2.6 构造函数与析构函数的执行顺序
3.3 封装性
3.3.1 成员的访问方式
3.3.2 继承方式和访问方式
3.3.3 在继承中的全局类
3.3.4 友元
3.4 多态性
3.4.1 函数重载(静态多态性)
3.4.2 默认函数参数值
3.4.3 运算符重载
3.4.4 函数覆盖(动态多态性)
3.5 关键字this
3.6 函数调用和关键字const
3.6.1 函数形式参数与调用参数
3.6.2 非静态成员函数本身的const常量属性
3.6.3 函数的返回数据类型
3.7 面向对象程序设计的核心思路
3.8 本章小结
3.9 习题
3.9.1 练习题
3.9.2 思考题
第4章 共用体
4.1 共用体的定义与格式
4.2 在共用体中调用成员变量的构造函数与析构函数
4.3  本章小结
4.4  习题
4.4.1  练习题
4.4.2  思考题
第5章 异常处理
5.1 异常的抛出与捕捉
5.2 浅拷贝和深拷贝
5.2.1 浅拷贝
5.2.2 深拷贝
5.3 避免内存泄漏
5.3.1 含有内存泄漏的例程
5.3.2 避开内存泄漏的方案
5.4 本章小结
5.5 习题
5.5.1 练习题
5.5.2 思考题
第6章 模板与标准模板库
6.1 自定义函数模板
6.2 自定义类模板
6.3 向量类模板vector
6.3.1 向量的构造函数、长度和容量
6.3.2 向量的迭代器
6.3.3 改变向量长度与容量
6.3.4 插入与删除元素
6.3.5 向量赋值与比较
6.4 集合类模板set
6.4.1 仿函数
6.4.2 集合的构造函数和迭代器
6.4.3 修改集合内容的成员函数
6.4.4 用于查询的集合成员函数
6.4.5 集合赋值与比较
6.5 排序函数模板sort
6.6 本章小结
6.7 习题
6.7.1 练习题
6.7.2 思考题
第7章 字符串处理
7.1 输出单个字符
7.2 基于数组的窄与宽字符串转换
7.3 字符串类
7.3.1 字符串的构造函数
7.3.2 字符串的容量与长度
7.3.3 获取字符串的内容与子串
7.3.4 字符串赋值与比较大小
7.3.5 字符串迭代器
7.3.6 插入与删除
7.3.7 查找与替换以及交换
7.3.8 基于字符串类的超长整数案例
7.4 本章小结
7.5 习题
7.5.1 练习题
7.5.2 思考题
第8章 标准输入输出与文件处理
8.1 标准输入输出
8.1.1 出入流类ios
8.1.2 输入流类istream
8.1.3 输出流类ostream
8.1.4 格式控制
8.2 文件流
8.2.1 只读文件流类ifstream
8.2.2 只写文件流类ofstream
8.2.3 读写文件流类fstream
8.3 习题
8.3.1 练习题
8.3.2 思考题
第9章 MFC图形界面程序设计
9.1 MFC程序总述
9.2 单文档程序设计
9.3 图形绘制
9.4 多
序言
前 言  软件正在逐步深入人们的日
常生活与工作,并成为各行各业的基础,同时也
是世界各国竞争的焦点。一方面,我国所面临的
卡脖子难题多与软件密切相关;另一方面,软件
产业具有低能耗、低资源、无污染和高产值等特
点。当前全球软件行业就业好,而且就业薪酬高
。因此,应当大力发展软件业。学好计算机语言
,编写出高质量的软件,有着迫切的国家与社会
需求。本书希望能在这方面为读者提供智慧的翅
膀,越过学好C++程序设计的种种障碍,尽情享
受学好C++语言的种种乐趣。  当然,不是所
有的软件都能产生效益。软件的质量非常重要。
然而,C++程序设计的众多教材和网络资源参差
不齐,错误很多,甚至出现互相矛盾的说法。不
少文献对C++语言一知半解,人为创造含糊不清
的概念。有些文献出于商业等目的而故意将C++
语言讲解得极其抽象和晦涩难懂,以体现其所谓
的深奥,甚至一些所谓的经典设计模式也含有错
误。在一些开源的C++程序代码中,常常可以发
现继承性等面向对象技术和工厂模式等设计模式
被滥用。这常常使得很多程序代码逻辑混乱不堪
,很难调试;使得不少程序代码的代码量不必要
地成倍增加,效率低下。最近几年,C++国际标
准的版本更新也比较频繁,这加剧了C++程序设
计学习与应用的难度。纵观软件历史,那些低质
量的软件被淘汰的浪潮此起彼伏,无论那些软件
包含了多少付出,甚至多少不眠之夜。因此,熟
练掌握计算机语言的特点,提高软件质量与竞争
力,显得尤其重要,可以降低自己辛勤汗水付之
东流的概率。本书紧扣最新的C++国际标准,力
求简洁直观,注重编程规范与测试,努力有理有
据地排疑解难,提高C++编程质量,让每份付出
都能有更多的回报。  C++语言是一种集面向
对象程序设计和面向过程程序设计于一体的计算
机编程语言,是迄今为止人类发明的最为成功的
计算机语言之一,应用非常广泛。C++语言面向
过程部分主要就是C++语言的类C部分,它基本
上兼容C语言。因此,C++程序设计应当可以像C
程序设计那样灵活和方便,可以编写出短小精悍
并且运行效率高的C++程序,从而高效解决实际
问题。  C++语言的面向对象部分为大规模程
序设计和程序代码的高效复用提供解决方案,支
撑大规模程序研发,方便程序维护。C++语言的
面向对象部分模仿人类世界组织来构造代码世界
,为程序代码的组织与管理提供新模式。C++语
言的面向对象部分是C语言所没有的。C++语言
的面向对象部分将计算机语言求解实际问题的格
局扩展到采用C++语言建立一个辉煌而庞大的编
程事业,从而建立起可以协同解决众多问题的庞
大代码世界。学习C++语言面向对象部分有难度
。然而,我们应当深刻体会到,既然C++语言支
持大规模的程序设计,那么它就不可能非常抽象
和晦涩难懂;否则,它也就无法满足大量程序员
协同开发程序的需求。我们应当深刻理解C++面
向对象程序设计的本质与精髓。在正确并且熟练
掌握C++面向对象程序设计之后,可以迅速提高
大规模程序的设计与编写效率,并急剧降低大规
模程序代码的调试与维护成本。总之,学好C++
程序设计将会大有作为。  学习C++程序设计
应当采用理论知识学习与编程实践相辅相成的模
式,缺一不可。学好C++程序设计基础理论知识
是进行编程实践的基础;否则,编程就会很盲目
,很难写出没有错误的代码。反过来,学习C++
程序设计是一个实践性很强的过程,离不开编程
实践。很多计算机语言教材一再强调学习计算机
语言程序设计千万不要满足于“上课能听懂和教
材能看懂”。我想这是非常有必要的,这正是所
谓的“实践出真知”。在实践的过程中应当注重
程序的设计与程序的调试。将学到的知识融入到
程序设计之中。在遇到程序代码错误的时候,不
要感到沮丧,更不要轻易放弃,而应当看作提升
自己调试能力的机会,不断磨炼自己。学习C++
程序设计的过程应当就是理论知识学习与编程实
践不断循环反复的过程。在阅读本书的同时需要
进行编程实践,然后再阅读本书,接着再进行编
程实践,如此反复,不断深入学习。  这种循
环反复也体现在对本书内容的多遍反复学习与实
践。学完本书之后,再从头阅读本书内容并实践
,进行多遍循环反复。在每遍学习过程中,不断
思考,不断领会,不断总结,不断提高。随着自
己编程能力的提升、对C++语言深入掌握以及编
程经验的丰富,每遍学习的收获也会有所不同。
学习C++程序设计常常需要这样一个百转千回的
过程,这样才能真正做到融会贯通。  为了方
便学习与实践,本书提供了非常丰富的例程和代
码示例;而且对于各个例程,本书也提供了极其
详细的讲解和分析,从而方便读者模仿与理解。
为了方便读者查找本书知识点和中心内容,本书
通过加黑、加粗、加框的方式强调各个部分内容
的中心词以及各个基本概念或定义的核心词,并
且提供了非常明显的注意事项、说明和小甜点等
内容,而且在附录中添加了图、表、例程以及类
、函数、运算符和宏等的页码索引。  本
导语
重点突出:本书不仅在内容上抓住并突出C++程序设计的重点和核心本质,而且在形式上通过加粗加框的方式突出各部分内容以及各个概念的中心词。_x000D_
准确严谨:本书努力去除现有C++现有相关文献资料当中的浮华与众多的错误,内容准确严谨,并且详细讲解如何进行C++程序等价类划分,提高程序测试的有效性。_x000D_
内容新颖:本书内容紧扣最新国际标准和软件产业最新实际需求,在C++面向对象程序设计、图形界面程序设计、设计模式和编程规范等方面具有鲜明特色。_x000D_
例程丰富:本书提供了109个例程和众多的示例性代码,采用简明方式揭示C++程序设计本质之处,通过翔实例程和例句展现C++编程思想,方便入门与自学。
精彩页
第3 章面向对象程序设计基

如图3-1 所示,在刚出现计算机编程时,由于受计算机内存和硬盘容量等的限制,要
用计算机程序解决实际问题需要超高的技巧。那时只有少数的科学家与工程师拥有机会并
且具备编程能力。那时的代码需要精心设计,让代码尽可能短小;否则,当时的计算机根
本就无法加载。因此,那时的代码晦涩难懂,人们很难判断程序的正确性,而且只能在语
句层次上复用。这些都引发了
设计使得普通大众也能够编写程序。最早的结构化程序设计是面向过程程序设计,以函数
软件代码危机——软件代码极其难写,而且软件运行结果的
可信度也很差。后来,结构化程序设计的提出使得这种情况得到了很大改善。结构化程序
为单位进行代码编写与复用;除此之外,没有统一的代码组织模式。随着程序规模的扩大,
人们对程序代码的复用性、灵活性和扩展性不断地提出更高的需求,并且不断地探索相应
的解决方案。面向对象程序设计正是在这样的背景下提出的,它也是一种结构化程序设计,
在面向过程程序设计中引入类的概念,从而方便代码的组织。面向对象程序设计模仿人类
社会组织代码,并做了大量的简化和抽象。因此,采用面向对象程序设计编写出来的代码
远没有人类社会那么复杂。不过,对象的范围却扩大了很多,可以构造出很多在现实生活
中并不存在的对象。代码的世界就像童话世界那样丰富多彩,各种对象千奇百怪。在面向
对象程序设计中,根据类与类之间的继承关系,
其互相配套的功能函数组织在一起,代码的使用与复用变得更加有序化。程序的扩展性与
规模得到了进一步的提升。
代码主要是以类为单位进行编写与复用的。
所有的类可以组成森林的结构。因此,可以采用森林模式进行代码组织。类将数据以及与
图3-1 程序设计方法与程序代码复用粒度的历史变迁
3.1 类 与 对 象
C++面向对象程序设计以类、模板和共用体作为构造程序的主要基本单位,其中最主
要和最核心的是类。本章只涉及类,不考虑共用体等其他数据类型。如果只考虑与类相关
C++程序设计从入门到精通 的对象,那么这种对象依赖于类而存在,即在面向对象程序设计中,对象无法离开类而独
立存在。本节只介绍类与对象的基本定义以及基础性的性质,其他属性将在后续各节逐步
展开介绍。
3.1.1
类声明与类定义基础
定义类实际上是在定义新的数据类型。类的定义与声明通常都是在头文件中。类定义
的基本格式如下:
class 类名
{
类成员声明或定义序列
};
在上面格式中,第一行代码称为类的头部,其他代码称为类的类体。上面定义格式不考虑
类的继承关系,关于继承性将在第3.2 节介绍。
..注意事项..:
(1)类定义是以分号结束的。因此,在编写类定义时,不要遗忘最后这个分号。
(2)在同一个程序中,不允许定义2 个类,它们拥有相同的类名。
(3)即使2 个类拥有完全相同的结构与类成员,只要它们的类名不同,这两个类就是2 种不同的
类型。
类的所有成员都必须在类体内声明或定义。换句话说,除了在类体内部,无法在任何
其他地方给类增添新的成员。类的成员主要包括成员变量和成员函数。这些内容将在后面
的小节介绍。
..小甜点..:
在本章中将会频繁出现访问这个术语,它的大致含义是使用或者查看。访问成员变量通常指的是
读取或修改成员变量的值。访问函数通常指的是调用函数。访问类通常指的是使用这个类,例如,用
这个类定义变量,或者定义这个类的子类,或者调用这个类的成员函数,或者读取或修改这个类的成
员变量的值。
类声明的格式如下:
class 类名称;
类声明不是类定义。类声明只表明这个类将在其他地方定义。因为仅仅依据类声明无
法知道这个类包含哪些成员,所以对于在类声明之后并且在类定义之前的程序代码而言,
这个类都称为不完整的类。对于正在定义 // 11
// 12
// 13
// 14
上面的代码由2 个源程序代码文件组成。在源文件“CP_AMain.cpp ”中,第7 行代码
通过new 运算生成了具有2 个实例对象的动态数组,并将动态数组的首地址赋值给指针变
量p。第8 行和第9 行代码分别给这2 个实例对象的成员变量赋值,第10 行和第11 行代
码分别输出这2 个实例对象的成员变量的值。最后,一定要通过带有“[ ]”的delete 运算
将动态数组的内存释放,如第12 行代码所示。
..小甜点..:
(1)通过类的实例对象也可以访问隶属于类对象的静态成员。
(2)虽然通过实例对象与直接通过类名访问类对象的静态成员具有相同的效果,但是从编程规范
的角度上讲,仍然提倡直接通过类名访问类对象的静态成员,而不提倡通过实例
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/2/22 19:32:16