有一天,我的孩子问我,const放哪。

那一刻,我笑容凝固了。

今天刷《C++ Primer》上的题目,遇到了const。const该放哪呢?在纠结了五十分钟后,我要给出我的答案:放左边。

首先,const放在左边意味着当出现基本数据类型常量时,它会是这样的: const int a = 3; 第一个词就是const,时时刻刻提醒你它是个常量。

其次,通过这个规范,我们可以简单地将const的作用范围看作是离它最近的一个关键字。请看下例:

#include <iostream>
using namespace std;

int main() {
    int n = 3;
    const int m = 5;
    // p是整型常量指针,指向整型常量,指针本身不是常量
    const int *p = &m;
    // 因此,p可以变换指向的对象,当然,指向非常量整型也是可以的
    p = &n;
    // q是整型常量指针常量, 指向整型常量,本身也是常量,不可改变
    // 事实上,q也可以指向非常量整型
    const int *const q = &n;
    // 这里改变q的值会出错
    q = &m;
    // t是整型指针常量,指向整型,本身是常量,不可改变
    // t只能指向非常量整型,由此看来从常量整型是非常量整型的窄化
    int *const t = &n;
    // 当改变t的值时会出错
    t = &m;
    cout<<p<<endl;
}

如果你觉得有点乱,那你只需要记住:

当const出现时,往右边看,看到第一个关键字是啥,那他就是啥常量

e.g const int *const q = &n

常量——-碰到int——->整型常量—–碰到q——->整形常量指针常量

顺便说一下,const的结合顺序是先左结合再右结合,不要误以为是简单的右结合哦。