导读:C++11引入了constexpr对const的补充,因此凡是表示“只读”建议用const,凡是表示“常量表达式”建议使用constexpr。
目录
一、关于const
1、const的功能
在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读与常量表达式,举一个简单的例子:
void func(const int num)
{
const int count = 24;
int array[num]; // error,num是一个只读变量,不是常量
int array1[count]; // ok,count是一个常量
int a1 = 520;
int a2 = 250;
const int& b = a1;
b = a2; // error
a1 = 1314;
cout << "b: " << b << endl; // 输出结果为1314
}
当 const 修饰的变量是只读变量时,仅仅是说明不能通过这个只读变量修改内存的值,但是可以通过其他方法修改内存值。 如下:
void func1(const int num)
{
int a = 10;
const int& con_b = a;
cout << con_b << endl;//输出为10
a = 20;
cout << con_b << endl;//输出20,改变了con_b的值大小
}
2、辨别“只读”与“常量表达式”
看了前面的关于 const 的内容,不知道是不是有疑问,const 什么时候为只读变量,什么时候是常量?