第8次课对象生灭.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8次课对象生灭

面向对象编程之对象生灭 类机制 类机制 ——类机制就是通过语言的规定性来实现一些技术,使类具有数据封装,信息屏蔽,多态等特征,起到数据类型的作用,而达到方便编程的目的. 使用类的应用程序只需要类定义头文件编程 实现类,也只需要类定义头文件,不需要使用类的程序细节 确定了类定义(头文件),便可以从事两方面的编程而互不干涉. 类定义成功地屏蔽了类的实现,是类机制的技术体现.——这是一个创举! 类机制 类作用域与类定义作用域 (P273) 类定义作用域: 从类定义结束开始,到从外面包围类定义的块结束(若类定义外无包围块,则结束于文件) 使用类的程序员在类定义作用域下编程 类作用域: 只包括类定义内部及成员函数定义内部,类作用域中,类的成员函数对数据成员函数具有无限制的访问权。 实现类的程序员在类作用域下编程 类机制 类的定义 类是一种数据类型——包括数据和数据操作描述(捆绑) 数据类型 ?变量 类(自定义数据类型)?对象 类的实体——对象由数据成员构成,赖以调用的操作是成员函数以及重载的操作符 类的定义包括有: 成员数据声明;一般为私有private,也可以是其他 成员函数定义:一般为公有public,也可以是其他 构造函数 析构函数 初始化函数 …… 类的定义 类定义作为头文件,如:point.h 类的实现作为独立编译单元,如:point.cpp 使用类的程序作为另一独立编译单元,如:f0809.cpp 类的头文件和类的实现可以作为一个独立的资源提供给编程者. 内联的成员函数定义一般放在头文件中.头文件中必须使用头文件卫士技术. 类的定义 成员函数与普通函数的区别: 成员函数属于类, 成员函数定义是类设计的一部分, 其作用域是类作用域. 而普通函数一般为全局函数 成员函数的操作主体是对象,使用时通过捆绑对象来行使其职责, 而普通函数被调用时没有操作主体 成员函数具有默认的内联性 类的定义 操作符定义 就是函数定义,调用操作符就是调用函数,例如:P263 一切自定义操作符都是语言中操作符的重载. 操作符作用:让编译器理解人性化编程代码.从正确性上讲并不是必要的.例如,Java不允许操作符重载 操作符重载的原则:便于理解,拒绝新创! 友元函数 部分打破数据封装的封闭性,方便操作——具有现实意义 对象生灭——类的函数定义、初始化 构造函数与初始化 析构函数 对象的拷贝 第九章 对象生灭 Chapter 9 Object Birth Death Contents 构造函数设计 ( Constructor Design ) 初始化要求:对象与变量的不同在于对象对应于事物,要求从诞生之时起便有明确的意义. 不能简单声明类型而不进行初始化——会产生无意义的对象: Date d; //d的初始值完全无意义(无论全局or局部) 封装性要求:初始化不是简单的参数与成员对应,而是联系参数到成员的过程. 构造函数设计 ( Constructor Design ) 函数形式:该过程产生对象(创建并初始化一个对象),而不是捆绑对象的成员函数调用,因而它是特殊的成员函数 形式:与变量的定义形式保持一致.构造函数原则上不能失败,也没有返回值。对象定义模仿函数调用的形式: 无名对象:一次性对象构造,没有对象名,与强制转换的形式一致,因而它是一个特定类型的对象.比如: 例:P297 构造函数设计 ( Constructor Design ) 从“set”函数到构造函数 我们可以通过声明一个对象,然后通过set函数来进行初始化赋值。 ——性能低下:需要构造函数、”set”函数的两次调用。同时也增加了代码量。 ——不利于类机制的安全性:对象创建时值不合法,在使用时必须要进行人为控制。 例f0811(P274)到f0901(P297) 构造函数重载 ( Constructor Overload ) 构造函数重载 ( Constructor Overload ) 若类中没有定义构造函数,则系统会默认定义一个无参空函数: 构造函数重载 ( Constructor Overload ) 任何其他的构造函数定义,都将阻止默认无参空函数的产生: 类成员初始化 ( Class Member Initializations ) 数据成员的空间分配是在构造函数被调用和其过程被执行之间的刹那间完成 在类中有对象成员时,那个刹那间便是调用对象所在类的构造函数,以创建对象空间的时机 右边的程序得到下列运行结果:P303 类成员初始化 ( Class Me

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档