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:要素の挿入の代わりに直接配置を検討する 査読者あと書き 索引