2011/02/17

const in C++

不懂為何自己這麼容易忘記這個小差別,所以就紀錄下來了。

const 放在函數宣告之前,表示這個函數的回傳值是個常數。

const 放在函數宣告之後,表示這個函數不會修改所屬類別的成員變數。



檔案:const.cpp
編譯:g++ -o const const.cpp
執行:./const
#include <iostream>
using namespace std;

class C
{
public:
    C() : _val(0) {}

    const int* foo(int p)
    {
        cout << "C.foo(" << p << ") is invoked" << endl;
        _val = p;

        return &_val;
    }

    int bar(int p) const
    {
        int ret = _val + p;

        cout << "C.bar(" << p << ") is invoked" << endl;
        // _val = p;

        return ret;
    }

private:
    int _val;
};

int main(int argc, char **argv)
{
    C c;

    const int* c1 = c.foo(10);
    // int* c1 = c.foo(10);
    c.bar(20);

    return 0;
}