const的用法
const 是一个关键字修饰符,用于修饰常量,说明变量是不可改变的常量,一经定义赋值不可改变。
const 修饰的变量具有以下特点:
const 常量只能在声明的时候赋值。
如果一个类内的成员变量被声明为const 常量,则该成员变量必须使用初始化列表的方式进行初始化。
const 修饰指针
const 修饰指针变量是规则有点特别:
如果const 在*的右边,则const修饰的指针变量。
int b = 8;
int * const a = &b;
*a = 10;
如果const在*的左边,则说明const修饰的是指针所指向的内存空间,这个内存空间是常量不能被改变的。
int b = 8;
const int *a = &b;
constexpr用法
constexpr 表示常量表达式,所谓常量表达式是指值不会发生改变的表达式,并且在编译的过程中能够得到计算结果的表达式。我们知道的常量表达是有哪些?const 对象属于常量表达式,数字、字符等字面值属于常量表达式。
constexpr 是C++ 11 新引入的关键字,他规定,允许将变量声明为constexpr 以便由编译器来验证变量的值是否是一个常量表达式。申明为constexpr 的变量一定是一个常量,而且必须用常量表达式进行初始化,否则无法编译通过。
const int b = 10;
int c = 8;
constexpr int exc = c;
constexpr int a = b;
constexpr 修饰指针
如果constexpr 修饰指针,那么constexpr 修饰作用只对指针有效,而对指针所指向的内存空间无效。
constexpr int b =10;
int c = 5;
constexpr int *a = &b;
constexpr int *d = &c;