1、常量,一定要且只能被初始化(包括类的初始化列表),不能被赋值,即不能修改。
2、常量成员函数,不能修改成员变量。
3、常量对象,不能调用非常量成员函数,因为非常量成员函数可能修改对象的成员变量。
4、指针常量(*const),指针本身是常量,指针指向的内容可以被修改。对应指针变量。
5、常量指针(const*),常量的指针,即指针指向的内容不能被修改,但指针本身是变量,可以被修改。
6、常量引用,通常用于函数形参,避免值拷贝,同时防止函数内对参数进行修改。
7、数组名,可以看做指针常量。
#include <vector> class A { public: const int x = 1; // 常量 const char y; A(): y('c') {}; // 初始化列表 int getValue() const; // 常量成员函数 int getValue(); // 非常量成员函数 }; void foo(const std::vector<int> &v) // 常量引用 { const A a; // 常量对象 int val = 2; int * const pInt1 = &val; // 指针常量 const int * pInt2;// 常量指针 int arr[] = {1, 2, 3}; // 数组名 int *pArr1 = arr; const int *pArr2 = arr; int const *pArr3 = arr; const int const *pArr4 = arr; }