在函数声明的参数列表后加上const关键字将函数声明为常量函数。
void hello() const {
print("Hello!");
}
注意:const关键字位于函数声明的返回类型前时不是常量函数,只是函数的返回值为常量。
const int f1() {...} // 不是常量函数,函数的返回值为常量
int f2() const {...} // 常量函数
常量函数的特性
常量函数只能读取外部数据而无法修改。
class A {
private:
int n;
public:
void f() const {
n = 0; // 错误:表达式必须是可修改的左值
}
};
常量函数的调用规则
- 非常量对象可以调用常量函数和非常量函数。
- 常量对象可以调用常量函数,不可以调用非常量函数。
举例:
#includeusing namespace std; class A { public: void f1() { cout << "f1" << endl; } void f2() const { cout << "f2" << endl; } }; int main() { A a; a.f1(); a.f2(); const A b; b.f1(); // 错误:对象含有与成员函数"A::f1"不兼容的类型限定符 b.f2(); return 0; }



