C/C++
本書は、好評を博した『Exceptiona
本書での新たな40のプログラミングクイズは、C++のソフトウェアデザインと開発を成功させるうえで避けて通れないルールと問題点を理解するうえで大変有効です。ジェネリックプログラミングやメモリー管理、またtraitsや述語などに関するC++標準ライブラリの利用が新しく取り上げられ、特に力点がおかれています。さらに、コンテナやアルゴリズムを使うときに留意しなければならないガイドラインや注意点も盛り込まれています。これらのトピックをこれほど深く掘り下げたC++書籍は他にはありません。
以下のようないくつもの重要な問題にたいして、本書では解決を与えています。
- mstd::mapやstd::setを利用するときどんな落とし穴がありうるだろうか? またそれを安全に回避する方法はいかなるものだろうか?
- STLで安全に使用できる述語はどのようなものか? 安全でないのはどのような述語か? そしてその理由は?
- インスタンス化する型の特性によってその振る舞いが変更可能な汎用テンプレートに対して利用できるテクニックとは何か?
- いつ、いかなる方法でコードを最適化すべきか? 気を利かせたつもりの最適化が障害となり得る、あるいは実際に障害となってしまう理由は何か? そして、これらに対する解答は、マルチスレッドセーフなコードを作成する上で、どのような影響を受けるのか?
- 例外安全はクラス設計に影響するか。それとも、後から思い立って追加できるようなものか?
- 異なるベンダーのライブラリを組み合わせるとき「シャム双生児」問題をどのように避ければいいか?
- auto_ptrを安全に使用し、デザインパターンをうまく利用して典型的な落とし穴を回避する方法は何か? auto_ptrをクラスメンバーとして使用できるか? また、その場合、特に注意しなければならないことは何か?
- 現代のC++において最も頻繁に尋ねられる質問であるが、名前空間は、いつ、どのように使うべきなのか?
【原著Webサイト】
http://www
【目次】
まえがき
序章
第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


