02 类和对象的更多内容.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文档。上传文档
查看更多
02 类和对象的更多内容

课件制作 第2章 类和对象的更多内容 主要内容 实例成员和静态成员 析构函数 拷贝构造函数 调用构造函数和析构函数的顺序 对象与函数 无名对象 友元函数和友元类 实例研究 小结和作业 2.1 实例成员和静态成员 实例变量 与类的特定对象联系在一起; 同一个类的不同对象,实例变量数据域是不同的,而且也不共享 2.1 实例成员和静态成员 静态数据成员 在不使用全局对象的情况下,如果希望一个类的所有对象共享某些数据成员,可以通过声明该数据成员为静态存储类型来实现 静态数据成员是一种特殊的数据成员,它以关键字static 开头 静态数据成员的值在各对象中是一样的,它为各对象所共有,而不只属于某个对象的成员 2.1 实例成员和静态成员 2.1 实例成员和静态成员 2.1 实例成员和静态成员 静态数据成员 静态数据成员是在程序编译时被分配空间,到程序结束时才释放空间 静态数据成员可以初始化,但只能在类体外进行初始化 使用静态数据成员的目的是节约空间,提高效率 静态数据成员与实例的关系 静态数据成员在内存中只占一份空间,每个对象都可以引用这个静态数据成员 静态数据成员的值对所有对象都是一样的;如果改变它的值,则在各对象中这个数据成员的值都同时改变 静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间;静态数据成员是在所有对象之外单独开辟空间。 静态数据成员不随对象的建立而分配空间,也不随对象的撤销而释放。 2.1 实例成员和静态成员 静态数据成员 静态数据成员初始化的一般形式为: 数据类型 类名∷静态数据成员名=初值; 不必在初始化语句中加 static 公有静态数据成员既可以通过对象名引用,也可以通过类名来引用 有了静态数据成员,同一个类各对象之间的数据有了沟通的渠道,实现数据共享,因此可以不使用全局变量。全局变量破坏了封装的原则,不符合面向对象程序的要求 2.1 实例成员和静态成员 静态成员函数 成员函数也可以定义为静态的,在类中声明函数的前面加 static 就成了静态成员函数 与静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分 静态成员函数的作用不是为了对象之间的沟通,而是为了能处理静态数据成员 在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员 2.1 实例成员和静态成员 2.1 实例成员和静态成员 2.1 实例成员和静态成员 2.1 实例成员和静态成员 静态成员函数 在Student类中定义了两个静态数据成员sum(总分)和count(累计需要统计的学生人数),这两个数据成员的值是需要进行累加的,它们并不是只属于某一个对象元素,而是由各对象元素共享 Total() 是公有的成员函数,可以引用本对象中的一般数据成员(非静态数据成员),也可以引用类中的静态数据成员 Average() 是静态成员函数,它可以直接引用私有的静态数据成员(不必加类名或对象名),函数返回成绩的平均值 主程序中引用Total() 函数要加对象名,引用静态成员函数Average() 函数要用类名或对象名 2.1 实例成员和静态成员 静态成员函数 如果在类外调用公用的静态成员函数,要用类名和域运算符“∷” 静态成员函数原则上不允许引用本类非静态数据成员 2.2 析构函数 析构函数(destructor)也是一个特殊的成员函数,其名字是类名的前面加一个“~”符号 析构函数没有返回类型和参数 当对象销毁时,析构函数被自动调用 它不能被重载。一个类可以有多个构造函数,但只能有一个析构函数 如果程序员没有显式定义析构函数,C++编译系统会自动为每一个类定义一个默认的析构函数,但它只是徒有析构函数的名称和形式,实际上什么操作都不进行 一般情况下,类的设计者应当在声明类的同时定义析构函数,以指定如何完成“清理”的工作 2.2 析构函数 2.2 析构函数 对象的生命期结束时,会自动执行析构函数。具体地说如果出现以下几种情况,程序就会执行析构函数: 如果在一个函数中定义了一个对象(它是自动局部对象),当这个函数被调用结束时,对象应该释放,在对象释放前自动执行析构函数 如果定义了一个全局对象,则在程序的流程离开其作用域时(如main函数结束或调用exit函数) 时,调用该全局对象的析构函数 如果用new 运算符动态地建立了一个对象,当用delete 运算符释放该对象时,先调用该对象的析构函数。它撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用 2.2 析构函数 2.3 拷贝构造函数 也是一种特殊的构造函数,每个类可以有一个拷贝构造函数 作用:创建一个对象并用另一个对象的数据初始化新建对象 拷贝构造函数的函数声明为:类名(类名 对象名) 2.3 拷

文档评论(0)

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

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

1亿VIP精品文档

相关文档