const为常量限定符。

const修饰基本数据类型

const int a = 10;
int const b = 20

上面两种写法是等价的。

const修饰指针

int a = 1;

const int* p1 = &a;       // p1指向常量
int const *p2 = &a;       // p2指向常量

int* const p3 = &a;       // p3为常量

const int* const p4 = &a; // p4为常量,且指向常量
  • 如果const位于星号*的左侧,则const就是用来修饰指针所指向的变量,即指针指向常量;
  • 如果const位于星号*的右侧,const就是修饰指针本身,即指针本身是常量。

const修饰引用

int x = 10;
int const &a=x;
const int &a=x;

上面两种写法是等价的。

const修饰函数

const可修饰函数的返回值、函数的形参,用来限定返回值和形参为常量。

const修饰成员函数

const修改成员函数表示该成员函数不允许修改函数成员变量

class Foo {
public:
    int foo() const {
        // value = 10; // error
        return value;
    }
private:
    int value = 5;
};