2014-02-01から1ヶ月間の記事一覧

13項 参照で例外を捕まえる

参照で例外を捕まえる例外は参照で捕まえるべきです。ポインタで捕まえる場合は、ポインタの指すオブジェクトの存在を保証しなければならなくなり、値で捕まえると、引数に渡すときに無駄なコピーが起こるためです。

12項 例外の発生のさせ方と引数引き渡し・仮想関数呼び出しとの違いを理解する

例外の発生のさせ方と引数引き渡し・仮想関数呼び出しとの違いを理解する

11項 デストラクターから出る例外を抑える

デストラクターから出る例外を抑える

10項 コンストラクターでの資源の漏れを防ぐ

コンストラクターでの資源の漏れを防ぐ

09項 資源の漏れを防ぐためにデストラクターを使う

資源の漏れを防ぐためにデストラクターを使う

08項 new と deleteの別の意味を理解する

new と deleteの別の意味を理解する

07項 &&, ||, , をオーバーロードしない

&&, ||, , をオーバーロードしない

06項 インクリメント演算子とデクリメント演算子で前置形式と後置形式とを区別する

インクリメント演算子とデクリメント演算子で前置形式と後置形式とを区別する前置形式は"operator++()"で、後置形式は"operator++(0)"で呼び出されます。

05項 ユーザ定義の変換関数に気をつける

ユーザ定義の変換関数に気をつける

04項 根拠のない省略時コンストラクターを避ける

根拠のない省略時コンストラクターを避ける "省略時コンストラクター"とは"引数が必要ないコンストラクタ"のことです。この項のまとめでは、"引数が必要ないコンストラクタ"で記述を統一します。

03項 配列をポリモルフィズム的には扱わない

配列をポリモルフィズム的には扱わない

02項 C++スタイルのキャストを愛用する

C++スタイルのキャストを愛用するCのキャストと比べたC++のキャストの利点は、目的別に複数のキャストが用意されていることと、キャストが見分けやすいことです。

01項 ポインターと参照の違い

今日からMore Effective C++ を読みます。 24項まではブログにまとめ、それ以降は目を通すだけにします。1週間で読みきることを目標にします。ポインターと参照の違い

50項 C++をもっと理解するために

C++をもっと理解するためにこの本を読み終わった後、もっとC++を理解するために覚える、知るべきこと。

49項 標準ライブラリに精通しよう

標準ライブラリに精通しようこれもタイトル通りです。

48項 コンパイラの警告に注意しよう

コンパイラの警告に注意しようタイトルの通りです。

47項 非ローカルstaticオブジェクトは、使用前に必ず初期化されるようにしよう

非ローカルstaticオブジェクトは、使用前に必ず初期化されるようにしようグローバルまたは名前空間で定義されていて、クラス内でstaticと宣言されている、またはファイルスコープでstaticと指定されたオブジェクトの初期化順序は特に規定されていません。 順…

46項 ランタイムエラーよりは、コンパイル時やリンク時のエラーのほうがいい

ランタイムエラーよりは、コンパイル時やリンク時のエラーのほうがいいC++はコンパイル時やリンク時のエラーを検出するのに優れています。 ランタイムにエラー検出を行うより、コンパイル時やリンク時に行うほうが安全なので、できる限りコンパイル時やリン…

45項 C++がどんな関数を黙って書き、呼び出しているのか、知っておこう

C++がどんな関数を黙って書き、呼び出しているのか、知っておこうクラスを書くときに、コピーコンストラクタ、代入演算子、コンストラクタ、デストラクタ、アドレス演算子を自分で宣言しないと、コンパイラが自動で作成します。

44項 あなたの意図することを言おう、自分が言っていることの意味を理解しよう

あなたの意図することを言おう、自分が言っていることの意味を理解しよう自分の書いたコードに含まれる、継承や包含、仮想関数がどういった意味を持つのか理解する必要があります。

43項 多重継承は慎重に使おう

多重継承は慎重に使おう 多重継承を使うと、名前衝突により問題が起こることがあります。 あいまいな状態になるときは、 ①同名の関数を複数継承したとき、関数を個別に再定義できない問題 ②1つのクラスを複数の経路で継承してしまうとき、名前解決があいま…

42項 privateな継承はよく考えてから使おう

privateな継承はよく考えてから使おう

41項 継承とテンプレートの違いを理解しよう

継承とテンプレートの違いを理解しよう継承 : オブジェクトが継承可能な関係で、型によって振る舞いを変えたいとき テンプレート : 複数の型に、型によって変わることのない振る舞いを与えたいとき。

40項 「それを持っている」関係や「それを実装手段とする」関係は、層を重ねる形でモデル化しよう

「それを持っている」関係や「それを実装手段とする」関係は、層を重ねる形でモデル化しようタイトルのような関係が成り立つときは、持たれるものを、親のデータメンバに含めます。 層を重ねる、包含、合成などと呼ばれています。

39項 継承の階層構造を下る方向のキャスト(ダウンキャスト)は避けよう

継承の階層構造を下る方向のキャスト(ダウンキャスト)は避けようダウンキャストを安全に行えるdynamic_castがありますが、dynamic_castは使うべきではありません。

38項 継承したデフォルトパラメータ値を再定義してはならない

継承したデフォルトパラメータ値を再定義してはならない基底クラスの仮想関数のデフォルトパラメータと、サブクラスの継承された関数のデフォルトパラメータが違う場合、基底クラスの仮想関数のデフォルトパラメータが継承された関数にも適用されます。 具体…

37項 継承した非仮想関数を再定義してはならない

継承した非仮想関数を再定義してはならない36項で、"非仮想関数を宣言する目的は、関数のインタフェースと強制的な実装を継承させる"としたので、継承した非仮想関数を再定義してはいけません。 継承した非仮想関数を再定義してしまうと、強制的な実装ではな…

36項 インタフェースの継承と実装の継承とを区別しよう

インタフェースの継承と実装の継承とを区別しよう

35項 publicに継承するときは、「その一種である」関係のモデルかどうか確認しよう

publicに継承するときは、「その一種である」関係のモデルかどうか確認しよう

34項 コンパイルするファイル間の依存性はできるだけ減らそう

コンパイルするファイル間の依存性はできるだけ減らそう