ホーム > 読んだ >

Effective C++
改訂2版

書誌

tagC++
authorScott Meyers
editor吉川邦夫(訳)
publisherアスキー出版局
year1998
price3,800
isbn7561-1808-9

目次

1感想
2抄録

履歴

editor唯野
2000.10読了
2000.11.7公開
2002.11.28修正
2012.1.17タグ追加

C++ の基本書のひとつ。必ずしも初めて知ったことばかりでもなかったが、非常に系統的に重点が網羅されている点では重宝する内容になっている。全体的に訳出が固めな気もするが、まあこんなものかもしれない。特筆すべきは、トピックのひとつひとつが極めて理詰めで説明されているため納得しやすく、(一部は除くが)長さもあまり長くない点である。本書の帯にある「すべての C++ プログラマ必読 !」という謳い文句は事実であり、本書の読む時間を惜しんで C++ を書いても、却って意味不明なバグに見舞われて時間を食うのがオチである。最低限、本書の扱う C++ という言語を効果的に使い落し穴にはまらないためのポイントは理解した方がいいだろう。文字通り、実戦書であり、C++ 使いを自ら任ずるならば必読書である。

とはいえ、この本は読書ノート化に非常に時間のかかった本でもある。インターネット的にいえば不完全な状態でもどんどん公開していくというのがセオリーなのかもしれないが、やはりあんまり嘘は書けないし(だからといって今の内容が完全かというとそうでもないのだが)、自分なりの納得はしないと意味はないしで、すっかり時間ばかり経ってしまった。しかし、続編ともいえる『More Effective C++』だけでなく、ピアソンからは『Effective STL』まで出るしで、あまり後回しにばかりもできないので、大急ぎで体裁だけを整えたという次第である。

抄録

26

デフォルトコンストラクタを呼び出さずにオブジェクトの配列を作るときにはポインタの配列として宣言するのが一般的。

class C
{
    ・・・
};

C* ptrArray[10];  // コンストラクタは呼び出されない
ptrArray[0] = new C;  // 個別の初期化

27/28

値渡しはコピーコンストラクタの呼び出しを意味している。また、オブジェクトの初期化はコンストラクタ、代入は operator= によって行われる。通常、代入演算子は新しい値のためのメモリを割り当てる前に、古い値に割り当てられていたメモリを解放する。

30-31

新しい 4 つのキャスト形式。新しいキャスト形式の方がキャストの目的を明示しやすい。また、キャスト箇所の検索も容易になる。

名前機能
const_cast定数性(const)を取り払う
dynamic_cast安全なダウンキャスト
reiterpret_cast実装に依存する結果となるキャスト (滅多に使わない)
static_castその他もろもろのキャスト、従来的な意味に近いキャスト

31-32

lhs(left-hand side) と rhs(right-hand side)。二項演算子などのパラメータを示すときに使う。また、ポインタは pT、リファレンスは rT、メンバ関数は mf と(本書では)記述している。

33

「ポインタへのポインタ」は「ポインタへのリファレンス」にした方が C++ 的。C は何でもマクロ、ポインタ、構造体、配列、関数で解決する言語ということもできる。

全文を読まれる場合はログインしてください


Up