「C++/Guidelines/変更を可能にしたい場合のみconstを外す/Code」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
//cpp/linenumber
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&>(
static_cast<const int_array&>(*this)[pos]
);
}
private :
std::vector<int> data_;
};
//cpp/linenumber
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_;
};