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对象修改。

posted on 2016-08-24 16:14  pan.panda  阅读(139)  评论(0编辑  收藏  举报