共用数据的保护.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文档。上传文档
查看更多
共用数据的保护.ppt

共用数据的保护 * 掌握:常对象的定义;引入常对象数据成员的方法;对象的常引用。 * 理解:常对象的指针的定义及引用。 * 了解:对象的动态建立和释放。 重点、难点 * 常对象的定义;引入常对象数据成员的方法;对象的常引用。 一、共用数据的保护 有些数据却往往是共享的,例如实参与形参,变量与其引用,数据与其指针等,人们可以在不同的场合通过不同的途径访问同一个数据对象 有时在无意之中的误操作会改变有关数据的状况,而这是人们所不希望出现的 既要使数据能在一定范围内共享,又要保证它不被任意修改,这时可以使用const,即把有关的数据定义为常量 1、常对象 定义常对象的一般形式为: ????类名 const 对象名[(实参表列)]; ????const 类名 对象名[(实参表列)]; 二者等价。 在定义对象时指定对象为常对象,数据成员不能被改变 常对象中的数据成员为常变量且必须要有初值。 如果一个对象被声明为常对象,则不能调用该对象的非const型的成员函数(除了由系统自动调用的隐式的构造函数和析构函数)。 编译系统只检查函数的声明,只要发现调用了常对象的成员函数,而且该函数未被声明为const,就报错 mutable in count 2、常对象成员(类) 可以在声明类时将成员声明为const,即声明常数据成员和常成员函数 ①常数据成员 ???作用和用法与一般常变量相似,用关键字const来声明常数据成员。 常数据成员的值是不能改变的。 有一点要注意:只能通过构造函数的参数初始化表对常数据成员进行初始化。 说明: ???不能采用在构造函数中对常数据成员赋初值的方法,下面的用法是非法的: ??????Time::Time(int h) ??????{ hour=h;} 如果在类外定义构造函数,应写成以下形式: ???Time::Time(int h):hour(h){} 即只能通过参数初始化表对常数据成员hour初始化 ②常成员函数 常成员函数的定义: 类型 函数名 const 如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它. 一般的成员函数可以引用本类中的非const数据成员,也可以修改它们。 在声明函数和定义函数时都要有const关键字,在调用时不必加const 常成员函数可以引用const数据成员,也可以引用非const的数据成员 const数据成员可以被const成员函数引用,也可以被非const的成员函数引用 常成员函数不能调用另一个非const成员函数 指向对象的常指针 定义:将指向对象的指针变量声明为const型并将之初始化,这样指针值始终保持为其初不能改变,即其指向始终不变。 定义指向对象的常指针的一般形式为: 类名 * const指针变量名=对象地址; 指向对象的常指针变量的值不能改变,即始终指向同一个对象,但可以改变其所指向对象中数据成员的值 往往用常指针作为函数的形参,目的是不允许在函数执行过程中改变指针变量的值,使其始终指向原来的对象 指向常对象的指针变量 定义指向常变量的指针变量的一般形式为: ??????const 类型名 *指针变量名; 例:下面定义了一个指向常变量的指针变量ptr: ????const char *ptr; ???注意:const的位置在最左侧,它与类型名char紧连,表示指针变量ptr指向的char变量是常变量,不能通过ptr来改变其值的。 如果一个变量已被声明为常变量,只能用指向常变量的指针变量指向它,而不能用一般的(指向非const型变量的)指针变量去指向它。 指向常变量的指针变量除了可以指向常变量外,还可以指向来未被声明为const的变量。此时不能通过此指针变量改变该变量的值。 如果函数的形参是指向非const型变量的指针,实参只能用指向非const变量的指针,而不能用指向const变量的指针 如果函数的形参是指向const型变量的指针,在执行函数过程中显然不能改变指针变量所指向的变量的值 指向常变量的指针变量可以指向const和非const型的变量,而指向非const型变量的指针变量只能指向非const的变量。 以上介绍的是指向常变量的指针变量,指向常对象的指针变量的概念和使用是与此类似的,只要将“变量”换成“对象”即可 (1)如果一个对象已被声明为常对象,只能用指向常对象的指针变量指向它,而不能用一般的(指向非const型对象的)指针变量去指向它。 ???(2)如果定义了一个指向常对象的指针变量,并使它指向一个非const的对象,则其指向的对象是不能通过指针来改变的。 ? ??(3)指向常对象的指针最常用于函数的形参,目的是在保护形参指针所指向的对象,使它在函数执行过程中不被修改。 ??

文档评论(0)

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

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

1亿VIP精品文档

相关文档