目录
第1章面向对象程序设计概论
1.1程序设计方法
1.1.1结构化程序设计方法
1.1.2面向对象程序设计方法
<br /><br /><br />目录<br /><br /><br />第1章面向对象程序设计概论<br /><br />1.1程序设计方法<br /><br />1.1.1结构化程序设计方法<br /><br />1.1.2面向对象程序设计方法<br /><br />1.2面向对象程序设计的基本概念<br /><br />1.2.1抽象<br /><br />1.2.2封装<br /><br />1.2.3消息<br /><br />1.2.4继承<br /><br />1.2.5多态<br /><br />1.3面向对象程序设计语言<br /><br />1.3.1混合型的面向对象程序设计语言C <br /><br />1.3.2纯面向对象程序设计语言Java<br /><br />1.4C 对面向对象程序设计方法的支持<br /><br />1.5C 程序的实现<br /><br />1.5.1Visual C 6.0<br /><br />1.5.2Visual Studio<br /><br />习题<br /><br />第2章从C到C <br /><br />2.1C 程序基本组成 <br /><br />2.1.1C 程序基本结构<br /><br />2.1.2C 程序基本组成<br /><br />2.2简单的输入输出<br /><br />2.2.1键盘输入<br /><br />2.2.2屏幕输出<br /><br />2.3指针与引用<br /><br />2.3.1指针<br /><br />2.3.2引用<br /><br />2.4函数<br /><br />2.4.1函数的定义与调用<br /><br />2.4.2函数原型与带默认参数的函数<br /><br />2.4.3函数的参数传递<br /><br />2.4.4内联函数与重载函数<br /><br />2.4.5标准库函数<br /><br />2.5new和delete运算符<br /><br />2.6其他若干重要的C 特性<br /><br />2.6.1符号常量<br /><br />2.6.2变量的定义<br /><br />2.6.3强制类型转换<br /><br />2.6.4string类型<br /><br />2.6.5结构<br /><br />2.7应用实例<br /><br />2.7.1结构体的定义<br /><br />2.7.2主要函数的实现<br /><br />2.7.3程序的主函数<br /><br />习题<br /><br /><br /><br /><br /><br />第3章类与对象<br /><br />3.1类<br /><br />3.1.1类的定义<br /><br />3.1.2类成员的访问控制<br /><br />3.1.3成员函数的实现<br /><br />3.2对象<br /><br />3.2.1对象的声明<br /><br />3.2.2对象的创建和销毁<br /><br />3.2.3对象成员的访问<br /><br />3.3构造函数与析构函数<br /><br />3.3.1构造函数<br /><br />3.3.2析构函数<br /><br />3.3.3拷贝构造函数<br /><br />3.4this指针<br /><br />3.5子对象和堆对象<br /><br />3.5.1子对象<br /><br />3.5.2堆对象<br /><br />3.6类的静态成员<br /><br />3.6.1静态数据成员<br /><br />3.6.2静态成员函数<br /><br />3.7类的友元<br /><br />3.7.1友元函数<br /><br />3.7.2友元类<br /><br />3.8应用实例<br /><br />3.8.1Student类的定义<br /><br />3.8.2Student类中函数的实现<br /><br />3.8.3静态成员的初始化及程序的主函数<br /><br />习题<br /><br /><br />第4章继承机制<br /><br />4.1基类和派生类<br /><br />4.1.1继承和派生的基本概念<br /><br />4.1.2继承的种类 <br /><br />4.2单继承<br /><br />4.3派生类的访问控制<br /><br />4.3.1公有继承<br /><br />4.3.2私有继承<br /><br />4.3.3保护继承<br /><br />4.4多继承<br /><br />4.4.1多继承的定义格式<br /><br />4.4.2二义性和支配规则<br /><br />4.4.3虚基类<br /><br />4.5继承机制下的构造函数与析构函数<br /><br />4.5.1继承机制下构造函数的调用顺序<br /><br />4.5.2派生类构造函数的规则<br /><br />4.5.3继承机制下析构函数的调用顺序<br /><br />4.6应用实例<br /><br />4.6.1保护成员的作用<br /><br />4.6.2私有继承<br /><br />习题<br /><br />第5章多态性和虚函数<br /><br />5.1静态联编与动态联编<br /><br />5.1.1静态联编<br /><br />5.1.2动态联编<br /><br />5.2虚函数<br /><br />5.2.1虚函数的作用<br /><br />5.2.2虚函数与一般重载函数的区别<br /><br />5.2.3继承虚属性<br /><br />5.3成员函数中调用虚函数<br /><br />5.4构造函数和析构函数中调用虚函数<br /><br />5.5纯虚函数和抽象类<br /><br />5.5.1纯虚函数<br /><br />5.5.2抽象类<br /><br />5.6虚析构函数<br /><br />5.6.1虚析构函数的定义与使用<br /><br />5.6.2虚析构函数的必要性<br /><br />5.7应用实例<br /><br />5.7.1类的设计<br /><br />5.7.2基类Employee的定义<br /><br />5.7.3兼职技术人员类Technician的定义<br /><br />5.7.4销售员类Salesman的定义<br /><br />5.7.5经理类Manager的定义<br /><br />5.7.6销售经理类Salesmanager的定义<br /><br />5.7.7编号的初始化与主函数<br /><br />习题<br /><br />第6章运算符重载<br /><br />6.1运算符重载的规则<br /><br />6.1.1运算符重载的规则<br /><br />6.1.2编译程序选择重载运算符的规则<br /><br />6.2运算符重载的形式<br /><br />6.2.1用成员函数重载运算符<br /><br />6.2.2用友元函数重载运算符<br /><br />6.2.3两种运算符重载形式的比较<br /><br />6.3单目运算符重载<br /><br />6.4赋值运算符重载<br /><br />6.4.1浅拷贝与深拷贝<br /><br />6.4.2重载赋值运算符的格式<br /><br />6.4.3重载赋值运算符函数的返回值<br /><br />6.4.4赋值运算符重载函数与拷贝构造函数的区别<br /><br />6.5特殊运算符重载<br /><br />6.5.1“[]”运算符重载<br /><br />6.5.2“()”运算符重载<br /><br />6.6类类型转换运算符重载<br /><br />6.6.1基本类型到类类型的转换<br /><br />6.6.2类类型到基本类型的转换<br /><br />6.7应用实例<br /><br />习题<br /><br />第7章模板<br /><br />7.1模板的概念<br /><br />7.1.1强类型的严格性与灵活性<br /><br />7.1.2解决冲突的途径<br /><br />7.1.3模板的概念<br /><br />7.2函数模板<br /><br />7.2.1函数模板的定义<br /><br />7.2.2函数模板的实例化<br /><br />7.2.3函数模板的重载<br /><br />7.3类模板<br /><br />7.3.1类模板定义<br /><br />7.3.2类模板的实例化<br /><br />7.3.3使用函数类型参数的类模板<br /><br />7.3.4使用默认参数的类模板<br /><br />7.4标准模板库STL<br /><br />7.4.1容器<br /><br />7.4.2迭代器<br /><br />7.4.3算法<br /><br />7.5应用实例<br /><br />7.5.1通过自定义类模板对双向链表进行基本操作<br /><br />7.5.2通过STL对双向链表进行基本操作<br /><br />习题<br /><br />第8章I/O流类库<br /><br />8.1概述<br /><br />8.1.1流的概念<br /><br />8.1.2流类库<br /><br />8.1.3支持文件的流类<br /><br />8.2格式化输入输出<br /><br />8.2.1使用ios类的成员函数进行格式控制<br /><br />8.2.2使用控制符进行格式控制<br /><br />8.3重载流的插入符和提取符<br /><br />8.4I/O常用成员函数<br /><br />8.4.1输入流的常用成员函数<br /><br />8.4.2输出流的常用成员函数<br /><br />8.5流的错误处理<br /><br />8.5.1I/O流的错误状态字<br /><br />8.5.2I/O流的状态函数<br /><br />8.6文件流操作<br /><br />8.6.1文件流<br /><br />8.6.2文件的打开与关闭<br /><br />8.6.3文件的读写<br /><br />8.7应用实例<br /><br />8.7.1定义类<br /><br />8.7.2数据输入函数<br /><br />8.7.3数据显示函数<br /><br />8.7.4数据查找函数<br /><br />8.7.5数据插入函数<br /><br />8.7.6主函数<br /><br />习题<br /><br />第9章异常处理<br /><br />9.1异常处理的基本思想<br /><br />9.1.1异常处理的概念<br /><br />9.1.2异常处理的基本思想<br /><br />9.2异常处理的实现<br /><br />9.2.1异常处理的语法<br /><br />9.2.2异常处理的执行过程<br /><br />9.2.3异常接口声明<br /><br />9.2.4标准库的异常处理<br /><br />9.3定义自己的异常类<br /><br />9.4异常的逐层传递<br /><br />9.5异常处理中的构造与析构<br /><br />9.6应用实例<br /><br />9.6.1采用自定义异常类<br /><br />9.6.2采用标准异常类<br /><br />习题<br /><br />第10章综合应用实例<br /><br />10.1设计任务与要求<br /><br />10.2程序的总体结构<br /><br />10.3详细设计<br /><br />10.3.1分数类设计<br /><br />10.3.2异常类设计<br /><br />10.3.3测试函数设计<br /><br />10.4程序清单<br /><br />10.5实例输出<br /><br />附录实验<br /><br />实验1简单的C 程序(2学时)<br /><br />实验2引用与函数(2学时)<br /><br />实验3构造函数与析构函数(2学时)<br /><br />实验4静态成员与友元(4学时)<br /><br />实验5继承与派生(4学时)<br /><br />实验6多态性与虚函数(4学时)<br /><br />实验7运算符重载(2学时)<br /><br />实验8模板(2学时)<br /><br />实验9I/O流(2学时)<br /><br />实验10异常处理(2学时)<br /><br />参考文献<br /><br /><br />显示全部信息前 言
前言
自从**台计算机诞生以来,程序设计方法与程序设计语言不断发展。面向对象的程序设计使计算机解决问题的方式更符合人类的思维方式,更能直接地描述客观世界,通过增加代码的可重用性、可扩充性和程序自动生成功能来提高编程效率,并且大大减少软件维护的开销,从而被越来越多的软件设计人员所接受。“面向对象”不再是软件开发中的一个时髦名词,而是对软件开发人员的基本要求。面向对象程序设计已经成为程序设计领域的主流技术。<br />前言<br /><br /><br />自从**台计算机诞生以来,程序设计方法与程序设计语言不断发展。面向对象的程序设计使计算机解决问题的方式更符合人类的思维方式,更能直接地描述客观世界,通过增加代码的可重用性、可扩充性和程序自动生成功能来提高编程效率,并且大大减少软件维护的开销,从而被越来越多的软件设计人员所接受。“面向对象”不再是软件开发中的一个时髦名词,而是对软件开发人员的基本要求。面向对象程序设计已经成为程序设计领域的主流技术。<br />目前,在教学实践中还很难找到一本合适面向对象程序设计的入门教材能够兼顾到理论应用和编程实践。我们编写本书的目的是为了给面向对象程序设计初学者提供一本清晰的入门教材,该教材以面向对象程序设计(ObjectOriented Programming,OOP)方法为核心,并选用C 语言作为工具。本书围绕两条主线进行编写: 一条主线以通俗易懂的语言围绕类与对象,介绍面向对象程序构造的基本思想; 另一条主线设计了丰富的实用程序,通过实践引导学生快速掌握使用C 语言开发面向对象程序的方法和技巧。<br />本书浓缩了作者多年来软件开发和教学实践的经验和体会,通过多次讲授面向对象程序设计,作者能够深刻理解面向对象程序设计编程的基本学习要求,与其他面向对象程序设计教材相比,本书有以下特色: <br />(1) 以循序渐进、深入浅出的方式引导读者学习面向对象程序设计的基本思想。<br />本书在章节的安排上是由易到难。在讲解每章的过程中,尽量用一个实例,从满足基本要求开始,一步一步融入新的思想和方法。每章*后设计了一个应用实例,围绕一个专用系统来开发,**对本章内容进行综合运用,同时与前面章节相呼应。<br />为了突出教学**,本书实例中没有用到C 语言的复杂结构,这样既使程序具有可读性,又避免了喧宾夺主。<br />(2) 以面向对象程序设计方法为核心,以C 语言为工具。<br />面向对象程序设计作为一种程序设计方法,应该是独立于程序设计语言的。本书在讲解面向对象程序设计的每一个新机制时,首先介绍为什么要引入这些机制,然后说明这些机制在C 内部是如何实现的。我们力求使读者不仅学会使用,而且可以理解这些机制。只有这样读者才可能很容易地转向其他程序设计语言。<br />当然,在面向对象程序设计语言环境中进行程序设计,可以使面向对象思想得到更好的支持。所以,在学习面向对象程序设计的过程中,掌握程序设计语言的特征固然是重要的,但掌握面向对象程序设计思想却是更本质的要求。<br />(3) 不需要先有扎实的C语言基础。<br />一是C 语言对C语言*主要的扩充是引入了面向对象的概念及相应的处理机制。本书第2章介绍了C 语言的新特性,且**介绍了它在后续章节中要用到的部分。二是没有设计复杂的算法,这与本书的教学目标是一致的。<br />(4) 类是构造面向对象程序的基本单元。<br />时下流行的一个观点是,学习C 应该先从类学起。从第3章开始,书中的实例程序基本上都是由主函数加上类组成的,类是构造面向对象程序的基本单元。这样有助于初学者采用面向对象思维方式而不是传统结构化的思维方式来解决实际问题,有助于构造良好的程序结构,为日后处理大型程序打好基础。<br />(5) 每个关键概念都配以完整的C 测试实例。<br />本书针对所讲述的知识点提供便于理解的实例,避免枯燥无味的讲解,给读者以直观的感受。每章后面提供一个综合实例,如此环环紧扣,帮助读者完成从了解、熟练到深入理解的学习过程。为了确保正确性,每个实例均已在Visual C 6.0环境下调试通过。<br />(6) 每章后面配有与教学要求一致的练习题。<br />每章后面的练习题内容全面,形式多样。包括问答题、选择题、判断题、分析程序输出结果题和编程题等。通过这些练习题,读者可以及时地检查和考核对本章内容学习和掌握的情况,教师也可以从中选出一些题作为作业题。<br />(7) 附录配有与教学要求一致的实验内容。<br />安排并指导学生上机实习,对学好本课程具有重要意义。对初学者来说,理解面向对象程序设计的基本思想需要一个循序渐进的过程。所以本书提供的实验内容既有验证性的,也有应用性的。每个实验中除了给出实验目的、实验内容外,还要求学生结合实验结果进行分析和讨论。<br />(8) 每章提供了教学视频。<br />为了让读者更轻松地完成本书的学习,我们精心制作了20小时的微课教学视频,全程语音讲解,让读者一学就会。<br />为方便教师教学和学生学习,我们还编写了配套的教学用书《面向对象程序设计(C 语言描述)题解及课程设计指导》,并提供书中所有源代码和课堂教学的课件等资源,构成一个完整的教学系列。<br />本书第3章~第10章由马石安编写,第1章~第2章以及附录由魏文平编写,全书由马石安统一修改、整理和定稿。<br /><br /><br />本书介绍<br /><br /><br />在编写过程中,本书参考和引用了大量书籍和文献资料,在此,向被引用文献的作者及给予本书帮助的所有人士表示衷心感谢,尤其感谢江汉大学领导和同事以及清华大学出版社领导和编辑的大力支持与帮助。<br />由于作者水平有限,加之时间仓促,书中难免存在缺点与疏漏之处,敬请读者及同行予以批评指正。<br /><br /><br /><br /><br /><br /><br /><br />编者<br />2018年3月<br /><br /><br /><br /><br /><br /><br />显示全部信息免费在线读第3章
类 与 对 象
类构成了实现C 面向对象程序设计的基础。类用来定义对象的属性和行为,类是C 封装的基本单元。本章将结合实例详细讨论类及对象。
视频讲解
3.1类
C 语言的类就是一种用户自己定义的数据类型,和其他数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数。
C 规定,任何数据类型都必须先定义后使用,类也不例外。
3.1.1类的定义
为了在程序中创建对象,必须首先定义类。C 语言用保留字class定义一个类,一般形式为:
class类名
{