网站大量收购独家精品文档,联系QQ:2885784924

5数据保护与共享课案.ppt

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

1、静态数据成员 是类的所有对象共享的成员,而不是某个对象的成员; 对多个对象来说,静态数据成员只存储在一个地方,供所有对象使用; 静态数据成员的值对每个对象都是一样的,并且其值可以被任何一个对象更新; 注意: 静态数据成员在定义或说明时前面加上关键字static; 静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化; 静态数据成员的初始化格式: 数据类型 类名::静态数据成员名=值; 说明: 初始化只能在类体外进行,前面不加static,以免与一般静态变量或对象混淆; 类的静态数据成员是在所有对象之外单独开辟内存空间的; 静态数据成员在程序运行前分配内存空间,到程序结束时释放内存; 静态私有数据成员只能成员函数来访问。 静态共有数据成员即可用类名访问,也可通过对象来访问。 [例]分析下列程序的输出结果。 2、静态成员函数 格式 static 静态成员函数名(参数表) 类名::静态成员函数名(参数表) 注意事项: 静态成员函数和静态数据成员是类的一部分; 静态成员函数的实现中不能直接引用本类中的非静态成员,可以引用本类中的静态成员; 静态成员函数中要引用非静态成员时,可以通过对象来引用; [例] 分析下列程序的输出结果。 第2节 类的友元 类的机制实现了数据的隐藏与封装,类的数据成员一般定义私有成员;成员函数一般定义为共有,提供类与外界的通信接口。 但:有时需定义一些函数,这些函数不是类的一部分,但又需要频繁访问类的数据成员。 解决方法:定义这些函数为友元函数 1、友元函数 友元函数是在类中用关键字friend修饰的非成员函数 友元函数可以是一个普通的函数,也可以是其它类的成员函数。 通过类的对象可以访问类的私有成员。 2、友元类 若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和受保护的成员。 注意: 友元关系是不可以传递的 友元关系是单向的 友元关系是不被继承的 第3节 共享数据的保护 C++虽然采取了不少有效的措施(如设private保护)以增加数据的安全性,但是有些数据却往往是共享的,人们可以在不同的场合通过不同的途径访问同一个数据对象。有时在无意之中的误操作会改变有关数据的状况,而这是人们所不希望出现的。 既要使数据能在一定范围内共享,又要保证它不被任意修改,这时可以使用const,即把有关的数据定义为常量。 1、对象的常成员 用const修饰的成员函数为常成员函数。 常成员函数声明格式: 类型说明符 常成员函数名(参数表)const ; 注意: const是函数类型的一部分 常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数 const关键字可以用于对重载函数的区分 3、对象的常引用 在声明引用时用const修饰,被声明的引用就是常引用。 例:Box box1(12,25,30),const box=box1; 常引用所引用的对象不能被更新 经常用 常引用作为函数的参数 4、指向对象的常指针 定义一般形式: 类名 *const 指针变量名=对象地址; 例: Box box1(1,1,1); Box *const p1=box1; 指针变量的指向关系不变 常用来做函数的形参,目的是不允许在函数调用的过程中改变指针变量的值。 5、指向常对象的指针变量 指向常对象的指针变量 定义一般形式: const 类型名 *指针变量; 例:const Box Box(1,2,3); const Box *pbox=box; 说明: 常对象只能用指向常对象的指针变量来指向 指向常对象的指针变量还可以用来指向非const对象 ,此时不能通过指针改变指针所指向对象的数据成员 [例]读程改错 * 数据的共享和 共用数据的保护 第一节 静态数据 类的对象独立拥有自己的数据成员空间,共享类的成员函数 对象之间相互独立,消息是对象之间交互的唯一方式 如果一个类的不同对象需要共享数据,怎么办? 目的:解决数据共享问题,即不通过全局对象,而实现同类多个对象之间的数据共享。 private: static int s; s是私有的静态数据成员; #include iostream.h class Myclass { public: Myclass(int a,int b,int c); void GetNumber(); void GetSum(); private: int A,B,C; static int Sum; }; int Myclass::Sum=0; Myclass::Myclass(int a,int b,int c) { A

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档