More Effective C++
仮想関数、多重継承、仮想基底クラスと実行時型識別のコストを理解する。
2つのライブラリーを使い分ける同じ機能を持つライブラリーにも、速度を重視したものや安全性を重視するなどの特徴があります。 例えば、iostreamライブラリーは型の安全性や拡張性に優れますが、一般にstdioのほうが高速だそうです。 なので、ライブラリー…
単独のopの代わりにop=を使うことを考える
暗黙的な型変換を避けるためのオーバーロード
戻り値最適化の促進
テンポラリーオブジェクトの起源を理解する
予想される計算のコストを償却する積極評価についてです。
遅延評価の使用を検討する遅延評価とは、必要になるまで処理を遅らせるということです。
80-20規則を覚えておこう80-20規則とは、処理資源の80%は20%のコードによって使用されるという経験則です。 この20%のコードを見つけるために、プロファイラを使うべきです。
例外処理のコストを理解する
例外使用を賢く用いる
参照で例外を捕まえる例外は参照で捕まえるべきです。ポインタで捕まえる場合は、ポインタの指すオブジェクトの存在を保証しなければならなくなり、値で捕まえると、引数に渡すときに無駄なコピーが起こるためです。
例外の発生のさせ方と引数引き渡し・仮想関数呼び出しとの違いを理解する
デストラクターから出る例外を抑える
コンストラクターでの資源の漏れを防ぐ
資源の漏れを防ぐためにデストラクターを使う
new と deleteの別の意味を理解する
&&, ||, , をオーバーロードしない
インクリメント演算子とデクリメント演算子で前置形式と後置形式とを区別する前置形式は"operator++()"で、後置形式は"operator++(0)"で呼び出されます。
ユーザ定義の変換関数に気をつける
根拠のない省略時コンストラクターを避ける "省略時コンストラクター"とは"引数が必要ないコンストラクタ"のことです。この項のまとめでは、"引数が必要ないコンストラクタ"で記述を統一します。
配列をポリモルフィズム的には扱わない
C++スタイルのキャストを愛用するCのキャストと比べたC++のキャストの利点は、目的別に複数のキャストが用意されていることと、キャストが見分けやすいことです。
今日からMore Effective C++ を読みます。 24項まではブログにまとめ、それ以降は目を通すだけにします。1週間で読みきることを目標にします。ポインターと参照の違い