constな戻り値

const-return-value.png

関数の戻り値にconstを付ける意味

if(GetSomething(a)==c){}

を、
if(GetSomething(a)=c){}

という風に、ifに=を書いてしまう、というミスを防ぐことができるだってさ。戻り値をconstにしたからって、ifの=のミスがどうにかなるものか?コンパイルが通らなくなる、というメリットがあるってことか。

privateメンバ変数を守るため

戻り値がポインタの場合

constをつけると、reinterpret_castはできなくなる。

戻り値にconstをつけてはいけない例外

operator=ではconstをつけてはいけない。

疑問

イテレータを戻り値にしたいとき

const_iteratorを返すべき?
const ○○::iterator にするべき?

サポートサイト Wikidot.com