可能ならいつもconstを使おう

const.png

constの使い方まとめ

  • constにして継承するのを禁止する

グローバルなconstはヘッダファイルだけに配置するべきである。

constは、明示的に宣言すれば、外部リンケージを与えることが出来る。

キャストを使って、const関数で書いたコードを再利用する。

char& CMiffy::operator[](std::size_t _position){
    //境界超えのチェック
    //アクセスログを取る
    //データの整合性のチェック
    //return pText[_position];//これでもいいけど、
    return const_cast<char&>(static_cast<const CMiffy&>(*this)[_position]);
    //constと非constなメンバ関数で、本質的に同じ実装をする必要がある場合、
    //非constなメンバ関数内でconstなメンバ関数を呼び出し、コードの重複を避ける事が出来る。
}
const char& CMiffy::operator[](std::size_t _position)const{
    std::cout<<"境界超えのチェック"<<std::endl;
    //アクセスログを取る
    //データの整合性のチェック
    return pText[_position];
}

containerをconstにしたいとき

const vector<string> str;//これはダメ。初期化できない
const vector<const string> str;//これが正解だと思う

サポートサイト Wikidot.com