版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34715587/article/details/88873256
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。
const是constant的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说const意味着“只读”readonly。
规则:
- const离谁近,谁就不能被修改;
- const修饰一个变量,一定要给这个变量初始化值,若不初始化,后面就无法初始化。
本质:const在谁后面谁就不可以修改,const在最前面则将其后移一位,二者等效。
用处:
- const 修饰成员变量
- const修饰函数参数
- const修饰成员函数
- const修饰函数返回值
在编程中要尽可能多的使用const,这样可以获得编译器的帮助,以便写出健壮性的代码。
const作用:
- 可以用来定义常量,修饰函数参数,修饰函数返回值,且被const修饰的东西,都受到强制保护,可以预防其它代码无意识的进行修改,从而提高了程序的健壮性(是指系统对于规范要求以外的输入能够判断这个输入不符合规范要求,并能有合理的处理方式。ps:即所谓高手写的程序不容易死);
- 使编译器保护那些不希望被修改的参数,防止无意代码的修改,减少bug;
- 通过给优化器一些附加信息,使关键字const也许能产生更紧凑的代码;
- 给读代码的人传递有用的信息,声明一个参数,是为了告诉用户这个参数的应用目的;
const优点:
- 编译器可以对const进行类型安全检查(所谓的类型安全检查,能将程序集间彼此隔离开来,这种隔离能确保程序集彼此间不会产生负面影响,提高程序的可读性);
- 有些集成化的调试工具可以对const常量进行调试,使编译器对处理内容有了更多的了解,消除了一些隐患。
eg:void hanshu(const int i){.......} 编译器就会知道i是一个不允许被修改的常量
- 可以节省空间,避免不必要的内存分配,因为编译器通常不为const常量分配内存空间,而是将它保存在符号表中,这样就没有了存储于读内存的操作,使效率也得以提高;
- 可以很方便的进行参数的修改和调整,同时避免意义模糊的数字出现;