Effective C++ 第3版

プログラムとデザインを改良するための55項目

2006年5月22日発行 315ページ 3800円+税
ピアソン・エデュケーション発行 スコット・メイヤーズ著 小林健一郎訳


 1991年の初版からC++コミュニティに大きな影響を与えてきた書籍の第3版です。内容は、55個のガイドライン(アドバイス)からなっています。C++プログラミングをするなら、ぜひご一読を、と思います。

 第 1章 C++に慣れよう
 第 2章 コンストラクタ、デストラクタ、コピー代入演算子
 第 3章 リソース管理
 第 4章 デザインと宣言
 第 5章 実装
 第 6章 継承とオブジェクト指向設計
 第 7章 テンプレートとジェネリックプログラミング
 第 8章 newとdeleteのカスタマイズ
 第 9章 いろいろな事
 付録A Effective C++を超えて
 付録B 第2版と第3版の対応表

訂正
誤記等があったことをお詫びいたします。また、ご指摘いただいた皆様に感謝いたします。

第1刷まで見つかったもの
p.vii:5項の位置
 第1章にではなく、第2章に含まれます。

p.59-p.77:奇数ページ上の章の名前
 「コンストラクタ、デストラクタ、コピー代入演算子」ではなく「リソース管理」です。

第3刷/4刷までに見つかったもの
p.8:上から4行目
「#ifdef/#ifndef」の/だけに色が付いていますが、本来は、強調のため、全部に色を
付けるものでした。

p.25:コードの8行目と16行目
「仮引数」「引数」はまちがいではありませんが、他のページと一貫性を持たせるには、
単にparamsとしておいた方がよかったと思います。

p.36:訳注*5
これはコード直後の「64ビットのレジスタに収まってしまいます。」に対する訳注です。

p.46:上から23行目
誤:logTranactionの呼び出しを
正:logTransactionの呼び出しを
はじめに、A.N.さんより、ご指摘いただきました。ありがとうございます。

p.96:下から3行目
privateはpublicの間違いです。

p.96:上から18行目
誤:への参照を戻していけない。
正:への参照を戻してはいけない。
はじめに、H.T.さんより、ご指摘いただきました。ありがとうございます。

p.116:上から1行目
誤:sawpを呼び出すときは
正:swapを呼び出すときは

p.133:下から12行目
誤:2つの要求がありまが、
正:2つの要求がありますが、
はじめに、H.T.さんより、ご指摘いただきました。ありがとうございます。

p.133:下から9行目
誤:newImage(imgSrc)
正:new Image(imgSrc)
はじめに、H.T.さんより、ご指摘いただきました。ありがとうございます。

p.134:下から7行目
誤:使うことになるとでしょう。
正:使うことになるでしょう。
はじめに、H.T.さんより、ご指摘いただきました。ありがとうございます。

p.135:下から4行目
誤:例外を投げない関数
正:例外を投げる関数

p.141下から9行目と8行目
誤:frend関数
正:friend関数

p.161:上から17行目
誤:flyがないです。
正:flyをなくすとよいでしょう。

p.166:上から17行目
誤:Baseを含む名前空間に、
正:Derivedを含む名前空間に、
はじめに、G.I.さんより、ご指摘いただきました。ありがとうございます。

p.167:下のコード上から7行目
誤:d.mf3(); // 問題なし(Base::mf3が呼び出される)
正:d.mf3(); // 問題なし(Derived::mf3が呼び出される)
はじめに、K.Y.さんより、ご指摘いただきました。ありがとうございます。

p.168の図でDerivedのスコープの中
誤:mf1(1つの関数)
正:mf1(2つの関数)
はじめに、K.Y.さんより、ご指摘いただきました。ありがとうございます。

p.169:上から13行目
誤:「仕事を送る関数」
正:「他の関数に仕事を送る関数」
(「実際には、他の関数を呼び出すだけの関数」という意味です。)

p.184:コードの1行目
誤:short calcHealth(const GameCharacter&)
正:short calcHealth(const GameCharacter&);

p.195:上から9行目
誤:アグリゲーション(集合)
正:アグリゲーション(集約)

p.195:下から11行目
誤:ha-s関係
正:has-a関係

p.204:上から13行目
誤:MP3
正:MP3Player

p.204:checkOutのエラーの説明
「オーバーロードの曖昧性によりエラーになる」と説明されていますが、
片方にconstがついているため、オーバーロードの曖昧性は問題になりません。
エラーの原因は、名前照合における(多重継承によって起こった)曖昧性のためです。
はじめに、G.I.さんより、ご指摘いただきました。ありがとうございます。

p.205の一番上の図の一番下のクラス名
誤:File
正:IOFile

p.211:上から3行目
誤:覚えてておくこと
正:覚えておくこと

p.218:下から11行目
誤:たとえば、したがって
正:たとえば、
(「したがって」を削除)

p.221:上から6行目
誤:ローカルするのです。
正:ローカルにするのです。

p.225:上から13行目
誤:なっているです。
正:なっているのです。

p.227:上から6行目
誤:LoogingMsgSender
正:LoggingMsgSender

p.237:下から5行目
誤:変換はできまます。
正:変換はできます。

p.241:下から1行目
p.242:上から4行目
誤:Ratinal
正:Rational

p.241:上から13行目
誤:構文ついて
正:構文について

p285:下から1行目
行最後の「。」が抜けています。


訂正の公開の途中から、はじめにご指摘いただいた方のイニシャルを表示するようにしました。
もちろん、それ以前の方のご指摘にも、大変感謝しています。
ただ、データが消失してしまいお名前が表示できないでいるのです。
申し訳ありません。
この件に関しましても、何かありましたら、ご連絡いただければ幸いです。