- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)