面向对象部分指南.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现?最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得函数中定义的变量,不仅仅受此 函数控制) * 可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。 * 在定义对象时,才为对象的数据成员分配空间。但是静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间。静态数据成员是在所有对象之外单独开辟空间。 (2) 静态数据成员不随对象的建立而分配空间,也不随对象的撤销而释放。静态数据成员是在程序编译时被分配空间的,到程序结束时才释放空间 static成员变量不属于对象的一部分,而是类的一部分,所以程序可以在还没有诞生任何对象的时候就处理此种成员变量。但是首先你必须初始化它。初始化static成员变量不能安排在类的构造函数中,因为构造函数可能一再被调用,而变量的初值却只应该设定一次。也不要把初始化安排在头文件中,因为它可能会被包含在许多地方。而应该放在main函数之中,或全域函数中,或者任何函数之外。 * 静态数据成员不随对象的建立而分配空间,也不随对象的撤销而释放。静态数据成员是在程序编译时被分配空间的,到程序结束时才释放空间 静态数据成员可以初始化,但只能在类体外进行初始化。不必在初始化语句中加static 静态数据成员既可以通过对象名引用,也可以通过类名来引用 * 3个输出语句的输出结果相同(都是10)。这就验证了所有对象的静态数据成员实际上是同一个数据成员。 (5) 有了静态数据成员,各对象之间的数据有了沟通的渠道,实现数据共享,因此可以不使用全局变量。全局变量破坏了封装的原则,不符合面向对象程序的要求 * 静态成员函数的优点是:即使本类的任何对象都不存在,他们也能够被调用,在这种情况下,静态成员函数函数只能使用静态数据成员,因为后者是唯一存在的数据成员,因此,即使我们不能肯定是否有类的对象存在,也可以调用类的静态成员函数来检查静态数据成员。 * 在Student类中定义了两个静态数据成员sum(总分)和count(累计需要统计的学生人数),这是由于这两个数据成员的值是需要进行累加的,它们并不是只属于某一个对象元素,而是由各对象元素共享的。 total是公有的成员函数,可以引用本对象中的一般数据成员(非静态数据成员),也可以引用类中的静态数据成员。 average是静态成员函数,它可以直接引用私有的静态数据成员(不必加类名或对象名),函数返回成绩的平均值。 引用total函数要加对象名,引用静态成员函数average函数要用类名或对象名。 请思考: 如果不将average函数定义为静态成员函数行不行?程序能否通过编译?为什么要用静态成员函数?请分析其理由 * * 用常量值初始化的整型const static数据成员是一个常量表达式。同样地,它可以用在任何需要常量表达式的地方,例如指定数组成员daily_tbl的维数。 const static数据成员在类的定义体中初始化时,该数据成员还是必须在类的定义体之外进行定义。定义时不必再指定初始值: * 类的静态成员 东南大学软件学院(苏州 ) C++程序设计 1.静态成员引入原因 Why ? 函数内部定义的变量, 会因对象的建立和销毁 频繁的建立和释放相应 的内存空间。 全局变量破坏了类的封 装性,违反了面向对象 程序设计的基本原则。 类的静态成员 东南大学软件学院(苏州 ) C++程序设计 2.静态成员的优势 class Box{ public: static int objectCount; ……. private: double length; double width; double height; }; 类定义 length width height length width height length width height objectCount 对象1 对象2 对象3 每个静态数据成员的副本在类的所有对象之间共享 类的静态成员 东南大学软件学院(苏州 ) C++程序设计 3.静态成员的内部机制 内存空间分配的时机:程序编译时 静态成员

文档评论(0)

0520 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档