[本]EffectiveC++ 改訂2版 | Assertion Failed!

[本]EffectiveC++ 改訂2版

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)/スコット・メイヤーズ
¥3,990
Amazon.co.jp


リンクがなかったので↑は3版だけど・・・。

C++をさらに理解するためのバイブルとして扱われているらしい第2版。


これから読みすすめるところです。


この書籍の目的は、


「言語としてのC++は知っていて、多少は使ったことはある、そのような人

又は中級者以上のプログラマが言語を効果的使うことにより、ソフトウェアを

読みやすく、保守が簡単で、拡張可能で、効率がよく、思い通りに動くものに

するための手引きとすること」


のようです。

これらが50項目にわたって書かれている。


目次を読んだ限り、書籍で学習しただけではいまいち利便性や使い道、使い方が

わからない部分も内部的な動きから示しているようであり、興味深い。


一通り読んだら、(著作権侵害とかならないように)、キーワードとなりそうな

大事な部分をここでも出していきたいと思う。


つまり、気になったら買えと。


[目次]

第1章 CからC++への移行


1項 #define ではなく、constとinlineを使う

2項 <stdio.h>ではなく、<iostream>を使う

3項 mallocとfreeよりも、newとdeleteを使う

4項 コメントはC++スタイルで書く


第2章 メモリ管理

5項 newとdeleteのペアは、同じ形式に揃える
6項 デストラクタでポインタメンバにdeleteを使うのを忘れない
7項 メモリ不足に備える
8項 operator newとoperator deleteを書くときは規約を守る
9項 「普通」形式のnewを掩蔽(えんぺい)しないよう注意する
10項 operator newを書くならoperator deleteも書く


第3章 コンストラクタ、デストラクタ、代入演算子

11項 メモリを動的に割り当てるクラスでは、コピーコンストラクタと
    代入演算子を宣言する
12項 コンストラクタでは、代入よりも初期化を使う
13項 初期化リストのメンバは、宣言した順に並べる
14項 基底クラスには仮想デストラクタを持たせる
15項 operator=を書くときは、*thisへのリファレンスを返す
16項 oprator=では、全てのデータメンバに代入する
17章 oprator=では、自分自身へ代入するケースをチェックする


第4章 クラスと関数:その設計と宣言

18項 クラスインターフェイスが完全かつ最小限になるまでがんばる
19項 メンバ関数、非メンバ関数、friend関数を使い分ける
20項 データメンバをpublicインターフェイスに入れるのはやめる
21項 使えるときは必ずconstを使う。
22項 値渡しよりも、リファレンス渡しを使う
23項 オブジェクトを返さなければならないときに、
    リファレンスを返そうと頑張るのはやめる
24項 関数のオーバーロードとデフォルトつきにパラメータは慎重に使い分ける
25項 ポインタと数値型とにオーバーロードするのは避ける
26項 潜在的な多義性に対するガードを固める
27項 暗黙のうちに生成される不要なメンバ関数は、明示的に使用を禁止する
28項 グローバルな名前空間は分割する


第5章 クラスと関数:その実装

29項 内部データの「ハンドル」を返すのはやめる
30項 メンバ関数は、自分よりもアクセス制限がきついメンバへの
    非constポインタや参照を返さないようにする
31項 関数は、ローカルオブジェクトへのリファレンスや関数の中で
    newで初期化したポインタの参照先を返してはならない
32項 変数の定義はできるだけ後回しにする
33項 関数はよく考えてからインライン化する
34項 コンパイルするファイル間の依存性はできるだけ減らす


第6章 継承とオブジェクト指向設計

35項 publicに継承するときは、「その一種である」関係のモデルか
    どうか確認する
36項 インターフェイスの継承と実装の継承とを区別する
37項 継承した非仮想関数を再定義してはならない
38項 継承したデフォルトパラメータ値を再定義してはならない
39項 継承の階層構造を下る方向のキャスト(ダウンキャスト)は避ける
40項 「それをもっている」関係や「それを実装手段とする」関係は、
    層を重ねる形でモデル化する
41項 継承とテンプレートの違いを理解する
42項 privateな継承はよく考えてから使う
43項 多重継承は慎重に使う
44項 あなたの意図することを言う、自分が言っていることの意味を
    理解する


第7章 その他

45項 C++がどんな関数を黙って書き、呼び出しているか知る
46項 ランタイムエラーよりは、コンパイル時やリンク時の
    エラーのほうがよい
47項 非ローカルstaticオブジェクトは、使用前に必ず初期化されるようにする
48項 コンパイラの警告に注意する
49項 標準ライブラリに精通する
50項 C++をもっと理解するために