- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计及C++ 主讲: 第4章 类中数据的共享与保护 本章作业 作业本:本章习题:一、二(1、3) 、三、四(1、3) 本章内容提要 4.1 静态成员 4.2 共享数据的保护 4.3 程序实例-----学生信息管理系统 本章小结 4.1 静态成员 在类的定义中,可以用关键字static声明成员为静态的,这些静态成员可以在同一个类的不同对象之间提供数据共享。不管这个类创建了多少个对象,但静态成员只有一个拷贝(副本),被所有属于这个类的对象共享。 静态成员包括静态数据成员和静态成员函数 4.1.1 静态数据成员 静态数据成员是解决同一个类的不同对象之间数据共享问题,同一个类所有的对象共享此成员,该成员只有一份拷贝 静态数据成员的声明形式为: static 类型名 静态数据成员名; 静态数据成员的初始化必须在类外进行,默认值为0,形式为: 类型名 类名::静态数据成员名=初值; 注意:前面不能再加static 4.1.1 静态数据成员 公有的静态数据成员可以在对象定义之前被访问,形式为: 类名::公有静态成员变量名; 在对象定义后还可以通过对象进行访问,形式为: 对象名.公有静态成员变量名 私有的静态数据成员不能被类的外部函数访问,也不能用对象直接进行访问。 4.1.1 静态数据成员 程序4.1 请在编程环境下直接运行演示 特别注意: (1)类内的语句 static int total;用来定义一个公有的静态数据成员total (2)类体外语句: int Student::total=0; 用来初始化静态数据成员 (3)两个构造函数中均有total++; 语句 (4)析构函数中有total--; 语句 4.1.1 静态数据成员 主函数中访问total的多种方式: (1) Student::total,对公有的静态数据成员,无论是否定义对象均可用此形式访问 (2) 当用指针p申请了动态对象空间之后,可以用p-total 即(*p).total形式访问 (3) s[0].total和s[1].total 均体现为通过对象来访问此静态数据成员 (4) 思考: 将static int total;移动到private:的下方作为私有成员,重新编译程序观察结果并解释原因 4.1.2 静态成员函数 为什么要有静态成员函数? (1)如果静态数据成员不是公有成员,则无法直接用类名或对象名来访问,这时,必定要借助于类的公有成员函数来间接访问。 由于静态数据成员是整个类公有的,不属于任何对象,因此希望公有成员函数对静态数据成员的访问也不必依赖对象,可以通过类名来访问,普通成员函数无法满足这一要求 因此需要将专门用来访问非公有静态数据成员的函数定义为静态成员函数 4.1.2 静态成员函数 静态成员函数在类内的原型声明形式: static 返回值类型 静态成员函数名(形式参数表); 声明为static的成员函数在类的范围内共享,它属于该类的所有对象,只能直接访问静态数据成员,不能对类的其他类型的数据成员或成员函数进行访问。 可以通过类名或对象名进行调用,形式如下: 类名::静态成员函数名(实际参数表);或 对象名.静态成员函数名(实际参数表); 4.1.2 静态成员函数 程序4.2 请在编程环境下直接运行演示 特别注意: (1)类内的语句 static int total;放在prirate:下,用来定义一个私有的静态数据成员 (2) 类体内的static void Print( ); 用来声明一个公有的静态成员函数 (3)主函数中调用该静态成员函数来间接访问私有属性的静态数据成员: Student::Print(); p-Print(); s[0].Print(); s[1].Print(); 4.1.2 静态成员函数 特别说明: (1)静态成员函数与普通的成员函数不同,无this指针 (2)静态成员函数几乎是专门为方便操作非公有属性的静态数据成员而设的 (3)一般不用来访问非静态成员 4.2 共享数据的保护 为解决数据共享与数据安全的统一,C++语言通过适时地巧用关键字const,对相应的数据进行保护。主要有3种用法: (1)常数据成员:类内的某一数据成员不能被修改 (2)常成员函数:类的成员函数只能访问类内的其他成员而不允许修改 (3)常对象:整个对象不能被修改 4.2.1 常数据成员 类中需要用到常量,定义为全局常量显然不利于代码移植 因此,在类中通过定义常数据成员,仅在本类中起作用,方便了类的移植。 常数据成员在类内的定义形式为: const 类型名
文档评论(0)