constメソッド


#include

class Int
{
int _value;
public:
Int() : _value(0)
{}

int& Value() { return _value; }
const int& Value() const { return _value; }
};

main()
{
Int i;
int& val = i.Value();
// int& Int::Value() が呼び出される

const Int k;
const int& cval = k.Value();
// const int& Value() const が呼び出される
}

メソッドのconstはシグネチャの一つとして判断されて、
オブジェクトがconstの場合はconstメソッドが呼ばれるという事。
戻り値の型を変える事が出来るのでconstの場合はconstな参照を
返すとかそういう事も出来るんです。

常識ですか?そうですか、、、(´・ω・`)