1 const的作用
便于进行类型检查。可以保护被修饰的东西。避免不必要的内存分配。为函数重载提供一个参考。
2 const成员函数
const成员函数只能访问数据成员的值,而不能修改他。
#include <iostream> using namespace std; class Test { public: Test(int x) :x_(x) { } void GetX() { cout << "GetX()" << endl; } void GetX() const //const成员函数,并与上边的函数构成重载 { cout << "GetX() const" << endl; } private: int x_; }; int main(void) { Test t(10); t.GetX();//输出GetX(),如果去掉函数GetX(),则输出GetX() const const Test t1(20); t1.GetX();//输出GetX() const;如果去掉GetX() const,会报错 return 0; }
非const对象既可以调用非const成员函数也可以调用const成员函数,优先非const;const对象只能调用const成员函数,不能调用非const成员函数。(很好理解,非const函数很可能会改变对象的成员,但对象是const的,不能被改变)
3 mutable关键字
用mutable修饰的数据成员可以被const成员函数或const对象修改。