关于const
1、通常使用const修饰符号限定变量,使得其不能被更改。因此,const对象在创建时必须初始化。
2、#注意:对于位于任何函数外部的内置类型,使用const修饰后不能执行默认初始化,但类类型被const修饰后能够正常执行默认初始化。#
3、const类型的对象受到的限制就是不能执行改变内容的操作。
4、默认情况下,const对象仅在当前文件中有效。如果需要在其他文件有效,可以使用extern关键字。
5、对常量的引用(reference to const):
1)初始化常量引用时允许任意的表达式作为初始值,甚至允许其绑定非常量的对象、字面值和表达式。
2)常量引用仅仅限制了不能使用该引用来改变其绑定的对象,但并不妨碍通过其他方式改变这个对象。
6、指向常量的指针(pointer to const):类似于常量引用,想要存放常量的地址只能使用指向常量的指针。
7、常量指针(const pointer):指针本身是对象,可以设为常量。
8、顶层const表示其修饰的对象不可改变,其变量类型可以任何类型;而底层const表示其所修饰的对象可以通过其他方式改变,其变量类型常为复合类型。
9、在执行对象的拷贝时,顶层const基本不影响,但底层const必须相同或者能够相互转换。
10、常量表达式是指不会改变并且在#编译过程#(常量可以在运行时初始化)中就能得到计算结果的表达式。
11、声明为constexpr的变量一定是一个常量,且必须用常量表达式初始化。
12、constexpr声明中如果定义了一个指针,限定符只对该指针起作用,也就是常量指针,类似于顶层const。