pearson
alwayslearning

C/C++

 

著:ハーブ・サッター
訳:浜田真理
監修:浜田光之
刊行:2008年11月
ページ数:308
税込価格:3,780円
ISBN10:4894714833
ISBN13:9784894714830



 本書は、好評を博した『Exceptional C++』に引き続き、「プログラム問題とその解法」という実践的な形式を通じて、現実のC++問題に解決を与え、成功に導く戦略を手ほどきします。小さなプロジェクトから大規模エンタープライズアプリケーションにいたるまで、C++でソフトウェアシステム設計をおこなうプログラマにむけて、著者は、長年の実践経験にもとづいたテクニックと解決方法を披露しています。
 本書での新たな40のプログラミングクイズは、C++のソフトウェアデザインと開発を成功させるうえで避けて通れないルールと問題点を理解するうえで大変有効です。ジェネリックプログラミングやメモリー管理、またtraitsや述語などに関するC++標準ライブラリの利用が新しく取り上げられ、特に力点がおかれています。さらに、コンテナやアルゴリズムを使うときに留意しなければならないガイドラインや注意点も盛り込まれています。これらのトピックをこれほど深く掘り下げたC++書籍は他にはありません。

 以下のようないくつもの重要な問題にたいして、本書では解決を与えています。
  • mstd::mapやstd::setを利用するときどんな落とし穴がありうるだろうか? またそれを安全に回避する方法はいかなるものだろうか?
  • STLで安全に使用できる述語はどのようなものか? 安全でないのはどのような述語か? そしてその理由は?
  • インスタンス化する型の特性によってその振る舞いが変更可能な汎用テンプレートに対して利用できるテクニックとは何か?
  • いつ、いかなる方法でコードを最適化すべきか? 気を利かせたつもりの最適化が障害となり得る、あるいは実際に障害となってしまう理由は何か? そして、これらに対する解答は、マルチスレッドセーフなコードを作成する上で、どのような影響を受けるのか?
  • 例外安全はクラス設計に影響するか。それとも、後から思い立って追加できるようなものか?
  • 異なるベンダーのライブラリを組み合わせるとき「シャム双生児」問題をどのように避ければいいか?
  • auto_ptrを安全に使用し、デザインパターンをうまく利用して典型的な落とし穴を回避する方法は何か? auto_ptrをクラスメンバーとして使用できるか? また、その場合、特に注意しなければならないことは何か?
  • 現代のC++において最も頻繁に尋ねられる質問であるが、名前空間は、いつ、どのように使うべきなのか?
 C++言語に関する徹底的で実践的な理解を深めながら、すぐれたコードの作成方法を示す本書は、いっそうの上達を心がけるプログラマには必携の一冊でしょう。

 ※本書は、ハーブ・サッターによるC++シリーズの日本語翻訳書としては4冊目になりますが、原著刊行の順番では『Exceptional C++』の続編に当たります。その後に『Exceptional C++ Style』『C++ Coding Standards』の順となります。
 
【原著Webサイト】
http://www.gotw.ca/publications/mxc++.htm


【目次】
まえがき 
序章 
第1章 汎用プログラミングとC++標準ライブラリ 
  項目1:ストリームの操作
  項目2:述語、パート1:remove()は何を削除するか?
  項目3:述語、パート2:ステートフル述語
  項目4:拡張可能なテンプレート:継承と特性(traits)
  項目5:typename
  項目6:コンテナ、ポインタ、およびコンテナではないコンテナ
  項目7:vectorとdeque
  項目8:setとmap
  項目9:等価なコード?
  項目10:テンプレートの特殊化とオーバーロード
  項目11:マスターマインドゲーム
第2章 最適化と効率 
  項目12:inline
  項目13:遅延最適化、パート1:単純な文字列クラスString
  項目14:遅延最適化、パート2:遅延コピー
  項目15:遅延最適化、パート3:イテレータとリファレンス
  項目16:遅延最適化、パート4:マルチスレッド環境
第3章 例外安全問題とテクニック 
  項目17:コンストラクタの失敗、パート1:オブジェクトの生存期間
  項目18:コンストラクタの失敗、パート2:例外を吸収する?
  項目19:捕捉されない例外
  項目20:管理されていないポインタに関する問題、パート1:引数の評価
  項目21:管理されていないポインタに関する問題、パート2:auto_ptrは問題を解決するか?
  項目22:例外安全なクラス設計、パート1:コピー代入演算子
  項目23:例外安全なクラスの設計、パート2:継承
第4章 継承とポリモフィズム 
  項目24:多重継承を使う理由は何か?
  項目25:多重継承のシミュレート
  項目26:多重継承と「シャム双生児」関数
  項目27:純粋仮想関数と非純粋仮想関数
  項目28:ポリモルフィズムの制御
第5章 メモリーとリソースの管理 
  項目29:auto_ptrの使用
  項目30:クラスメンバーとしてのスマートポインタ、パート1:auto_ptrの問題点
  項目31:クラスメンバーとしてのスマートポインタ、パート2:ValuePtrへの道
第6章 フリー関数とマクロ 
  項目32:再帰宣言
  項目33:ネスト関数のシミュレート
  項目34:プリプロセッサマクロ
  項目35:#define
第7章 各種トピック 
  項目36:初期化
  項目37:先行宣言
  項目38:typedef
  項目39:名前空間、パート1:using宣言とusingディレクティブ
  項目40:名前空間、パート2:名前空間への移植
あとがき 
付録A:(マルチスレッド環境では)最適化にならない最適化 
付録B:シングルスレッド対マルチスレッドセーフなString実装テスト結果 
参考文献 
訳者あとがき 
索引 


  • レビュー (0)
  • トラックバック (0)
トラックバックURL :
http://www.pej-hed.jp/tb.cgi/2591