或许这是我学了两年C++(误,第一次了解const
(1)基本const用法:
const int N=1000;
1.定义程序用到的字符串常量,数字,代替宏定义;const定义的常量在预处理阶段并不存在,而是在程序运行的时候才会出现
const volatile int N=1000;
//加上volatile关键字表示它是不稳定的,支持修改,从内存里取值
2.常量引用;常量指针
int x=1000;
const int& rx=x;
//const& 成为万能引用,可以引用任何类型,可以给变量加上const属性,只能读,不能写,const常量用起来就非常安全
const int* px=&x;
const 常量指针
const 指针常量 //左定值,右定向 即const在左边值不变;const在右边指针不变
(2)与类相关的const用法
`class Democlass final
{
private:
const long MAX_SIZE=256;//const成员变量
int m_val;//成员变量
public:
int get_value()const//const成员函数
{
return m_value;
}
}`
const 成员函数的真正含义是函数执行过程是const的,不会改变成员变量,也就是说成员函数是一个只读操作
因为常量引用,常量指针关联的对象是只读,不可修改的,那么就意味着对他的任何操作都是只读的,
所以编译器会检查const对象相关的代码,如果成员函数不是const的,就不允许调用
既然对象是const,那么相关操作必然也是const的
说到这里扯出另一个关键字”mutable”
“mutable”与”volatile”关键字的字面含义有点像,但用法,效果大相径庭;
“volatile”可以用来修饰任何变量;
“mutable”只能用来修饰类里面的成员变量,
表示对象即使是在const里也是可以修改的
换句话说,就是标记为mutable的成员不会改变对象的状态,也即不影响对象的常量性,
所以允许const成员函数改写mutable成员变量
总结:
1.const
他是一个类型修饰符,可以给任何对象加上“只读”属性,保证安全;
他可以修饰引用或指针,”const&”是万能引用,可以引用任何类型,是函数入口的绝佳选择
它还可以修饰成员函数,表示函数是“只读”的,const对象只能调用const成员函数
2.volatile
他表示变量可能会被“不被察觉”的修改,禁止编译器优化,影响性能,应当少用
3.mutable
他用来修饰成员变量,允许const成员函数修改,mutable变量的变化不影响对象的常量性
抛砖引玉 希望大家补充