C++ 中 const 的用法总结

 

修饰变量

  • 内置类型
// 局部变量
const int a = 0;

// 类的成员变量
class A {

private:
    const int a; // 常对象成员只能在初始化列表中赋值

public:
    //A() : a(0) {}; // OK
    //A(int value) : a(value) {}; // OK

    A() {
        a = 0; // ERROR
    }
};
  • 指针类型
// 指针指向的内容不可变
const int *p = 0;
int p1; 
*p = 1; // ERROR
p = &p1; // OK

// 指针不可变
int* const p = 0;
int p1;
*P = 1; // OK
p = &p1; // ERROR
    
// 指针和指针指向的内容都不可变
const int * const p = 0;
int p1;
*P = 1; // ERROR
p = &p1; // ERROR
  • 引用类型
// 以下两种方式 a 都是不可变的
int const &a = 0;
const int &a = 0;
  • 类的对象
const Test t;
t.set(0); // set 必须为 const 函数

修饰函数

  • 参数

参数根据需要运用 const 设定参数的不可改变类型。

  • 返回值

返回值同”修饰变量“中描述,确定返回值的不可改变类型。

修饰类的成员函数

class A {
    int getValue() const {
        return 0;
    }
};

Effective C++

尽可能使用 const

参考

https://interview.huihut.com/#/?id=const

https://www.runoob.com/w3cnote/cpp-const-keyword.html

https://blog.csdn.net/wangkai_123456/article/details/76598917