
項目 13:iterator よりも const_iterator を優先する
|
83
正誤表より補足
メンバ関数「data」の右辺値参照オーバロードが右辺値を返すようにするには、右辺
値参照を返す方法の方が良いでしょう。戻り値用に一時オブジェクトを作成する動
作を避けられます。また、先に挙げた元々の「data」インタフェースの参照戻し(80
ページ)とも一貫性を維持できます。
この動作が良いことは紛れもありませんが、ハッピーエンドの暖かな光に惑わされ、本項目の真
のポイントを忘れてはいけません。真のポイントは、基底クラスの仮想関数を派生クラスでオーバ
ライドする場合は、常に override を付加し宣言することです。
重要ポイント
•
オーバライド関数は override と宣言する。
•
メンバ関数の参照修飾子を用いると、左辺値オブジェクト、右辺値オブジェクト(*this)を
区別できる。
項目 13:iterator よりも const_iterator を優先する
const_iterator とは、STL が備える、const を指すポインタ相当であり、変更を禁止された値を指
します。可能な場面では常に const を使用せよと一般に言われており、この言葉を鵜呑みにすれば
イテレータを使用する場面でもイテレータが指すものを変更する必要がなければ、const_iterator
を使用すべきとなります。
この点は C++98 でも C++11 でもその通りです。しかし C++98 の const_iterator ...