const精解.docVIP

  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文档。上传文档
查看更多
const精解

const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令? **************常量必须被初始化************************* cons的作用 ???(1)可以定义const常量?????????例如: ?????????????const?int?Max=100; ?????????????int?Array[Max];???????? ???(2)便于进行类型检查????????????例如: ?????????????void?f(const?int?i)?{?.........} ????????编译器就会知道i是一个常量,不允许修改; ???(3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 ????????还是上面的例子,如果在函数体内修改了i,编译器就会报错; ????????例如:? ?????????????void?f(const?int?i)?{?i=10;//error!?} ????(5)?为函数重载提供了一个参考。 ?????????class?A ?????????{ ???????????...... ???????????void?f(int?i)???????{......}?file://一个函数 ???????????void?f(int?i)?const?{......}?file://上一个函数的重载 ????????????...... ??????????}; ?????(6)?可以节省空间,避免不必要的内存分配。 ?????????例如: ??????????????#define?PI?3.14159?????????file://常量宏 ??????????????const?doulbe??Pi=3.14159;??file://此时并未将Pi放入ROM中 ??????????????...... ??????????????double?i=Pi;???????????????file://此时为Pi分配内存,以后不再分配! ??????????????double?I=PI;???????????????file://编译期间进行宏替换,分配内存 ??????????????double?j=Pi;???????????????file://没有内存分配 ??????????????double?J=PI;???????????????file://再进行宏替换,又一次分配内存! ?????????const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。 ?????(7)?提高了效率。 ???????????编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。 使用const ???(1)修饰一般常量,常数组,常对象   ?修饰符const可以用在类型说明符前,也可以用在类型说明符后。??????例如:??? ???????????int?const?x=2;  或  const?int?x=2;   ?????int?const?a[5]={1,?2,?3,?4,?5};????或??const?int?a[5]={1,?2,?3,?4,?5}; ???????????class?A; ?????const?A?a;??或?????A?const?a;   ??? ???(2)修饰指针 ????????const?int?*A;???或??int?const?*A;?//const修饰指向的对象,A可变,A指向的对象不可变 ????????int?*const?A;? ????????????//const修饰指针A,?????A不可变,A指向的对象可变? ????????const?int?*const?A;??????//指针A和A指向的对象都不可变 ???(3)修饰引用 ?  ?????const?double??v;??????该引用所引用的对象不能被更新  (4)修饰函数的返回值: ????????const修饰符也可以修饰函数的返回值,是返回值不可被改变,格式如下: ????????????const?int?Fun1();? ????????????const?MyClass?Fun2(); ???(5)修饰类的成员函数: ????????const修饰符也可以修饰类的成员函数,格式如下: ????????????class?Clas

文档评论(0)

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

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

1亿VIP精品文档

相关文档