const介绍
const是c++语言中的保留字,作用是将变量转为常量,常量是一旦赋值过后是改变不了的量,并且常量是必须在声明的时候就初始化。
例如:
1 | const int x = 10; |
我们可以发现给x重新赋值后,x存储的值依然是原来的值。
全局常量和局部常量的区别
const修饰的变量真的不能改变吗?
常量真的是不能改变的吗?我们科以使用指针的方法来试一下能否改变。
1 | const int x = 10; |
由此我们可以知道指针并不能改变常量的值。但是真的是这样吗?我在百度上面查了后才知道,这只是针对基本数据类型才会是这样的,如果我们使用自定义类型,使用指针的方式
还是能够改变值的,这是因为编译器在编译代码的时候,发现常量后会自动优化代码,将常量直接替换成值,而不是常量符号,这样我们在运行代码无论如何也改变不了使用常量的
时候的值。但是由于自定义类型,编译器并不确定这种类型,所以无法替换,也就可以改变值。
1 | struct T |
const_cast 解析
const_cast转换符是用来移除变量的const或volatile限定符。为什么要去掉const呢?因为在指针变量赋值常量地址的时候,编译器是不允许这样操作的,但是我们恰好就是想要这
么做,const_cast就可以这样去掉const修饰符,引用也是如此。