声明:以前只知道要多用const,却不知为什么。今天看我以前写的代码时,突然间领悟了添加const修饰符的好处妙处,加上以前的理解,在这里做一个总结。
我们都知道const修饰符对所修饰的对象所起的有如下作用:
1、修饰一个对象,也就是常对象或常量,使编译器对该对象实施不能修改的约束
2、修饰类成员函数,也就是常量成员函数,使该成员函数不能修改其所在类的成员变量的值,并且常对象只能访问常成员函数
对于使用const的好处,很多语言入门书都有提到,但对于这种重要的东西却只是一笔带之,一笔带之却不详说之,不祥说之便是一头雾水之,难免会给初学者增加一些压力。那么使用const修饰符有什么好处呢?为什么呢?
好处一、提高代码安全性。比如有一个变量a,其存的数值为神舟X号载油量,现要通过它来计算飞船能否顺利到达月球,可是在计算之前,一名程序员不知为什么,可能是因为生活遇上不顺心的事或是工程项目很大写太多代码疲惫了吧,居然在一次操作中把a+10写成了a=10,人为因素,谁能预料呢?结果可想而知,那位程序员就在那里拼命的说,通过程序检测,油还是不够,继续加,最后,不行这飞船的油缸得做大点才行。这时候const修饰符就能起到防灾的作用了,只要把变量a修饰为const。
好处二、提高代码的可读性和可维护性。比如在检查代码逻辑时有一个类,里面有大部分的常成员函数和一些非常成员函数,各成员函数可能修改该类得数据变量,因此要分析该类的功能或这些函数间的联系就不得对每个函数进行不逐一分析了,这时候看到常成员函数便可以跳过因为他不对数据产生改变。又如在维护一段过程性代码时,在分析各语句,各变量间的逻辑关系时,一看到命名有标记为const常量,只要该是数据准确的,就可以减少负担免去对它的分析,因为它是不改变的(一般不会那么无聊通过强制转换改变它吧)。
好处三、提高程序的效率。这主要跟编译器有关,只要知道跟编译器有关即可。查了查资料是这样子的,(1)将某些东西声明为 const 有助于编译器发现使用错误。const 能被用于对象的任何范围,用于函数参数和返回类型,用于整个成员函数。(2)编译器坚持二进制位常量性,但是你应该用概念上的常量性(conceptual constness)来编程。(3)当 const 和 non-const 成员函数具有本质上相同的实现的时候,使用 non-const 版本调用 const 版本可以避免重复代码。
小结:在编程时使用const就要求程序员的思维更加严谨,这就像做人一样为人处事谨慎总有好处的。const修饰符其包含的哲学性,也体现了当今计算机语言的一个魅力点。总之一句话:const修饰符,只要可能就用它,你会为之感到高兴的。
(以上部分观点纯属个人观点,若有不足或不对的,欢迎批之,常来吐口水总是有好处的)
欢迎学习交流 转载不忘注明出处(http://blog.csdn.net/zhanxinhang)! ^_^
======= welcome to my HomePage(http://blog.csdn.net/zhanxinhang) to have a communication =======