- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C浅谈修饰符const,const修饰符,cconst修饰函数,const修饰函数,const修饰指针,const修饰函数返回值,函数后面加const修饰,const修饰成员函数,const修饰,const修饰函数参数
C++:浅谈修饰符const
1.大家知道,C++有一个类型严格的编译系统,这使得C++程序的错误在编译阶段即可发现许
多,从而使得出错率大为减少,因此,也成为了C++与C 相比,有着突出优点的一个方面
2.C 中很常见的预处理指令 #define VariableName VariableValue 可以很方便
地进行值替代,这种值替代至少在三个方面优点突出:
一是避免了意义模糊的数字出现,使得程序语义流畅清晰,如下例:
#define USER_NUM_MAX 107 这样就避免了直接使用107带来的困惑。
二是可以很方便地进行参数的调整与修改,如上例,当人数由107 变为201时,进改动
此处即可。
三是提高了程序的执行效率,由于使用了预编译器进行值替代,并不需要为这些常量分
配存储空间,所以执行的效率较高。
鉴于以上的优点,这种预定义指令的使用在程序中随处可见。
3.说到这里,大家可能会迷惑上述的1 点、2 点与const有什么关系呢?,好,请接着向
下看来:
预处理语句虽然有以上的许多优点,但它有个比较致命的缺点,即,预处理语句仅仅只
是简单值替代,缺乏类型的检测机制。这样预处理语句就不能享受C++严格类型检查的好处,
从而可能成为引发一系列错误的隐患。
4.好了,第一阶段结论出来了:
结论:Const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承
它的优点。
现在它的形式变成了:
Const DataType VariableName = VariableValue ;
为什么const 能很好地取代预定义语句?
1. 首先,以const 修饰的常量值,具有不可变性,这是它能取代预定义语句的基
础。
2. 第二,很明显,它也同样可以避免意义模糊的数字出现,同样可以很方便地进行
参数的调整和修改。
3. 第三,C++的编译器通常不为普通const常量分配存储空间,而是将它们保存在符
号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也
很高,同时,这也是它取代预定义语句的重要基础。
这里,我要提一下,为什么说这一点是也是它能取代预定义语句的基础,这是因为,编
译器不会去读存储的内容,如果编译器为const分配了存储空间,它就不能够成为一个编译
期间的常量了。
4. 最后,const定义也像一个普通的变量定义一样,它会由编译器对它进行类型的检
测,消除了预定义语句的隐患。
const 使用情况分类详析
1.const 用于指针的两种情况分析:
int const *A; file://A可变,*A不可变
nt *const A; file://A不可变,*A 可变
分析:const 是一个左结合的类型修饰符,它与其左侧的类型修饰符和为一个类型修
饰符,所以,int const 限定 *A,不限定A.int *const 限定A,不限定*A.
2.const 限定函数的传递值参数:
void Fun(const int Var);
分析:上述写法限定参数在函数体中不可被改变。由值传递的特点可知,Var在函数体
中的改变不会影响到函数外部。所以,此限定与函数的使用者无关,仅与函数的编写者有关。
结论:最好在函数的内部进行限定,对外部调用者屏蔽,以免引起困惑。如可改写如下:
void Fun(int Var){
const int VarAlias = Var;
}
3.const 限定函数的值型返回值:
const int Fun1();
const MyClass Fun2();
分析:上述写法限定函数的返回值不可被更新,当函数返回内部的类型时(如Fun1),
已经是一个数值,当然不可被赋值更新,所以,此时const无意义,最好去掉,以免困惑。
当函数返回自定义的类型时(如Fun2),这个类型仍然包含可以被赋值的变量成员,所以,
此时有意义。
4. 传递与返回地址:此种情况最为常见,由地址变量的特点可知,适当使用 const,
意义昭然。
5.const 限定类的
您可能关注的文档
最近下载
- 公司人员借调协议书模板通用版.docx VIP
- 食品配送服务方案.docx
- GB∕T 33338-2016 浸胶纱线、线绳和帘线捻度试验方法.pdf
- 3.中央八项规定精神专题解读.ppt VIP
- 2025年武汉市武昌区公开招聘社区干事40人笔试模拟试题及答案解析.docx VIP
- 道依茨BFM1013产品维修装配操作培训.ppt VIP
- 全国轻工行业职业技能竞赛计算机程序设计员S(CAD设计)赛项备赛试题库(含答案).docx
- 2025年武汉市武昌区公开招聘社区干事40人备考题库及答案解析.docx VIP
- 中央八项规定实施细则解读的课件.ppt VIP
- IATF16949--质量管理体系内部审核计划.xlsx VIP
文档评论(0)