常量对象

不希望某个对象的值被改变

  1. class A {};
  2. const A a;
  • 常量对象只能调用常函数

    常量成员函数

  • 在类的成员函数说明后面加const

  • 成员函数不能修改成员变量的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)

    1. class A {
    2. public:
    3. int value;
    4. int getValue() const;
    5. void func();
    6. };
    7. int A::getValue() const {
    8. value = 0; // wrong
    9. func(); // wrong
    10. }
  • 两个成员函数,名字和参数表一样,一个是const一个不是,这算重载

    • 常量对象调用const成员函数,非常量…

      常引用

  • 常作为函数的参数

    • 避免复制构造函数的开销,而指针还不大好看