Effective C++
"データメンバをpublicインタフェースに入れるのはやめよう"タイトルの通り
"メンバ関数、非メンバ関数、friend関数を使い分けよう"
クラスインターフェイスが完全かつ最小限になるまで頑張ろうクライアントが普通やりたいようなことはなんでもできるようにし、完全なインターフェイスを実現します。 インターフェイスが多すぎると複雑で保守しづらいため、最小限のインタフェースを目指しま…
operator=では、自分自身へ代入するケースをチェックしよう
"operator=では、全てのデータメンバに代入しよう"
"operator=を書くときは、*thisへのリファレンスを返そう"
"基底クラスには仮想デストラクタを持たせよう"
"初期化リストのメンバは、宣言した順に並べよう"
"コンストラクタでは、代入よりも初期化を使おう"
"メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言しよう"タイトルの通り、メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言します。 宣言を忘れてデフォルトの代入演算子が使われると、メモリ領域…
"operator newを書くなら、operator deleteも書こう"
"普通の形式のnewを隠蔽しないように注意しよう"
"operator newとoperator deleteを書くときは規約を守ろう"new,deleteをオーバロードするときには、規約を守る必要があります。
"メモリ不足に備えよう"メモリ割り当て失敗時の対応を、set_new_handler()で定義できます。 set_new_handler()を使うためには、new.hをinculdeします。
"デストラクタでポインタメンバにdeleteを使うのを忘れないようにしよう"メモリリークが蓄積されると、問題が起こります。 なので、デストラクタでポインタメンバをdeleteします。このとき、コンストラクタでポインタメンバに0を割り当てておくと、関係のな…
"newとdeleteのペアは同じ形式に揃えよう"newで確保、deleteで解放 -> 正しく解放される。 new arrayで確保、deleteで解放 -> 不定。 newで確保、delete arrayで解放 -> 不定。 new arrayで確保、delete arrayで解放 -> 正しく解放される。なので、newとdele…
"コメントはC++スタイルで書こう"
"mallocとfreeよりも、newとdeleteを使おう"newを使ってメモリを取得したとき、コンストラクタがあればそれを呼び出します。 deleteを使って解放したとき、デストラクタはあればそれを呼び出します。 malloc/freeは、何も呼び出しません。コンストラクタ/デ…
"ではなく、を使おう"
C++の復習のために、EffectiveC++を読みます。 できれば一日1項は読みたい"#defineではなく、constとinlineを使おう"