constをデフォルトで使用し、変更を可能にしたい場合のみconstを外す。
const char * const massage = "hello.";
void print(const Foo * const foo) {
}
void print(const Foo& foo) {
}
const std::vector<int>::const_iterator it = vec.begin();
class int_array {
public :
// ...
const std::size_t& size() const {
return data_.size();
}
// constなオブジェクトのための[]演算子
const int& operator[] (const std::size_t pos) const {
return data_[pos];
}
// 非constなオブジェクトのための[]演算子
int& operator[] (const std::size_t pos) {
return
const_cast<int&>( // []の戻り値からconstをキャストで外す
static_cast<const int_array&>(*this)[pos] // constを*thisに付けてconstな[]を呼び出す
);
}
private :
std::vector<int> data_;
};
最終更新:2010年03月01日 23:28