Const关键字

定义常量

const int MAX_VAL = 23;
const double PI = 3.14;
const char* SCHOOL_NAME = "Peking University"

定义常量指针

相较于普通的指针,我们不可以通过它修改变量的值

int n,m;
const int* p = &n;
*p = 5;//编译出错
n = 4;//ok
p = &m;//ok,常量指针的指向可以变化

所以我们在写函数的时候常常写上const关键字避免被函数修改值

注意点

T*const T*是完全不同的

不能把常量指针赋值给非常量指针,反过来可以

int a = 2;
const int* p1;int* p2;
p1 = &a; // ok
p2 = p1; //error
p2 = (int*)p1; //ok,强制类型转换
C/C++ 极度不安全的一点就是指针可以通过强转换常量指针来修改变量
 void changeValue(const int* a){
    int* tmp = (int*)a;
   *tmp = 4;
}
 int main(){
    int n=10;
    changeValue(&n);
   cout << n << endl;    //输出4
}

OOP中的const关键字

2020/5/19补充

有下面这几个特征,一定要记住:

  1. const函数不能操作成员变量,不能调用非const函数
  2. 比较函数必须标记const,同时参数类型也为const T&
Last modification:May 9th, 2020 at 08:29 pm
Compared with money, your comment could inspire me more.
相较于钱财,你的留言更能激发我创作的灵感