Contents
ポイント先の変数をconst修飾する方法
int const* p; const int* q;
これはどちらも同じ意味。
ポインタ変数自身をconst修飾する方法
int* const p;
参照をconst修飾する方法
int const& p; const int& q;
これはどちらも同じ意味で、参照先の変数が変更できなくなる。
const参照は、一時オブジェクトを受け取れる
参照は原則としてlvalueしか受け取れないが、const参照ならば一時オブジェクトであるrvalueも受け取れる。
理由は、消え去る一時オブジェクトを変更しても意味がないが、書き換えないなら受け取っても問題ないということ。
参照の余談
int& const p;
ポインタと違い、参照はこのような形では記述できない。
理由は、ポインタと違い、参照先を後から変更することはできないから。