C++プログラマから絶大な支持を集めるC++界のカリスマ、スコット・メイヤーズが、優れたC++プログラムはどのように書けばよいのかを指南。C++をすみずみまで知り尽くした著者が、効果的かつ堅牢、移植性の高い優れたC++プログラムを書くノウハウを42項目にまとめています。さらに上を目指したい中上級者必携の一冊です。C++11/C++14対応。
Effective Modern C++
―C++11/14プログラムを進化させる42項目
Scott Meyers 著、千住 治郎 訳
- TOPICS
- Programming , C/C++
- 発行年月日
- 2015年09月
- PRINT LENGTH
- 364
- ISBN
- 978-4-87311-736-2
- 原書
- Effective Modern C++
- FORMAT
- Print PDF EPUB
関連ファイル
目次
出版社より
謝辞
はじめに
1章 型推論
項目1:テンプレートの型推論を理解する
項目2:auto の型推論を理解する
項目3:decltype を理解する
項目4:推論された型を確認する
2章 auto
項目5:明示的型宣言よりもauto を優先する
項目6:auto が期待とは異なる型を推論する場面ではETII を用いる
3章 現代のC++ への移行
項目7:オブジェクト作成時の() と{} の違い
項目8:0 やNULL よりもnullptr を優先する
項目9:typedef よりもエイリアス宣言を優先する
項目10:enum にはスコープを設ける
項目11:private な未定義関数よりもdelete を優先する
項目12:オーバライドする関数はoverride と宣言する
項目13:iterator よりもconst_iterator を優先する
項目14:例外を発生させない関数はnoexcept と宣言する
項目15:可能な場面では常にconstexpr を用いる
項目16:const メンバ関数はスレッドセーフにする
項目17:自動的に生成される特殊メンバ関数を理解する
4章 スマートポインタ
項目18:独占するリソースの管理にはstd::unique_ptr を用いる
項目19:共有するリソースの管理にはstd::shared_ptr を用いる
項目20:不正ポインタになり得るstd::shared_ptr ライクなポインタにはstd::weak_ptrを用いる
項目21:new の直接使用よりもstd::make_unique やstd::make_shared を優先する
項目22:Pimpl イディオムを用いる際は特殊メンバ関数を定義する
5章 右辺値参照、ムーブセマンティクス、完全転送
項目23:std::move とstd::forward を理解する
項目24:ユニヴァーサル参照と右辺値参照の違い
項目25:右辺値参照にはstd::move を、ユニヴァーサル参照にはstd::forward を用いる
項目26:ユニヴァーサル参照をとるオーバロードは避ける
項目27:ユニヴァーサル参照をとるオーバロードの代替策を把握する
項目28:参照の圧縮を理解する
項目29:ムーブ演算は存在しない、コスト安でもない、使用もされないと想定する
項目30:完全転送できない場面を把握する
6章 ラムダ式
項目31:ディフォルトのキャプチャモードは避ける
項目32:クロージャ内にオブジェクトをムーブする場面では初期化キャプチャを用いる
項目33:auto&& 仮引数をstd::forward する場合はdecltype を用いる
項目34:std::bind よりもラムダを優先する
7章 並行API
項目35:スレッドベースよりもタスクベースプログラミングを優先する
項目36:非同期性が不可欠の場面ではstd::launch::async を指定する
項目37:std::thread はすべての場面でjoin 不可にする
項目38:スレッドハンドルのデストラクタ動作の差異には注意する
項目39:イベントが1 度切りならばvoid なfuture を検討する
項目40:並行処理にはstd::atomic を、特殊メモリにはvolatile を用いる
8章 もう一ひねり
項目41:コピー可能仮引数のムーブコストが安く、かつ常にコピーする場面では値渡しを検討する
項目42:要素の挿入の代わりに直接配置を検討する
査読者あと書き
索引