类型修饰符const是指常类型
常类型的变量或对象的值不可以被更新,因此const对象创建时必须要初始化
const对象是编译期概念,编译器在编译过程中将用到该变量的地方都替换成相应的值
const in a = 10;
// file_1.cpp
// 定义并初始化了一个常量,该常量可以被其他文件访问
extern const int bufSize = fcn();
// file_2.h
// 与file_1.cpp中定义的bufSize是同一个
extern const int bufSize;
// file_1.cpp定义并初始化了bufSize,因此显然是一个定义,加上了extern则可以被其他文件访问
// file_2.h头文件中的声明也由extern做了限定,其作用是指明bufSize并非本文独有,它的定义将在别处出现
const int a = 10;
const int &b = a;
int c = 5;
const int &d = c;
const int *p = &a;
// 或者
int const *p = &a;
const double pi = 3.14; // pi是常量
const double *p = π // p可以指向一个双精度常量
double *p2 = π // 错误!!!p2是一个普通指针,不可以指向一个常量对象
int a = 1;
const int *p = &a; // 不可以通过指针p来修改a的值
int *const p = &a;
#include
using namespace std;
int main() {
int num = 0;
int * const ptr = # //const指针必须初始化!且const指针的值不能修改
int * t = # // 通过非常量指针对常量指针指向的值进行修改
*t = 1;
cout << *ptr << endl;
}
const int max_files = 20;
const int limit = max_files + 1;
// 以上两条均为常量表达式