constの使い方について

第32回目 ちょっとイライラするconst。でも、実は頼もしい奴です。

ポイント先の変数を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;

ポインタと違い、参照はこのような形では記述できない。
理由は、ポインタと違い、参照先を後から変更することはできないから。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です