【博客3】探究c++中的const
2019-04-11 20:51
543 查看
探究const的性质:
1.const可以定义常量(可以作为指定数组大小的常量,c中不可以):
2.对于全局const变量,不允许其他cpp文件访问:
测试代码:
测试结果:
结果:编译报错,无法解析a变量,const此时不允许被其他外部的文件所访问。
将const去掉后的结果:
结果:正确运行。
3.测试const修饰形参的意义:
- 当形参为值传递时,加不加const都无所谓,因为修改的是副本,并不会影响实参
- 当形参为引用或者指针时,如果不加const,除非你真的需要修改形参,否则你要加进去,避免非const变量的传不进来
4.测试对const进行“绕过”修改:
1.对局部const进行修改:
结论:我加volatile的原因是因为如果不加的话,那么编译器默认去寄存器读它的值,那么即使内存上的已经被修改,但是寄存器上的副本没有修改,看不到结果。同时也说明编译器会优化对一些常量的读取,比如:放到寄存器中
2.对局部const变量的修改:
结果:无法对全局const变量进行绕过修改,因为编译器对全局const变量应该已经提前写入符号表中,不允许修改了。
大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。
相关文章推荐
- C++ const基础和const符号表机制探究
- 探究Java和C++中的关键字:final vs. const
- C++类型cast之static/dynamic/reinterpret/const
- Zlib与GZip - woaidongmao - C++博客
- c++术语辨析——顶层const和底层const
- C++中const用法浅析
- [C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)
- c++值、对象、指针、const
- C++ const关键字的使用知识点总结
- c,c++中const
- Java中final 与C++中Const的区别
- 发现一个学习C++很有用的博客
- 【C/C++】类中的static成员、static const成员和const成员
- static const extern在C与C++中的区别
- 理解复杂的C/C++声明 const, typedef , 函数指针
- C++中的四种强制转换 dynamic_case,const_cast,static_case,reinterprer_case的不同
- C++基本概念——const与基本类型和类、const与指针、const与引用
- C++ - 类型转换 static_cast, dynamic_cast, reinterpret_cast, const_cast
- C/C++语言中闭包的探究及比较
- (转)关于C++ const 的全面总结