Effective Modern C++
――C++11/14プログラムを進化させる42項目

[cover photo]
  • 2015年09月 発行
  • 364ページ
  • ISBN978-4-87311-736-2
  • フォーマット Print PDF ePub mobi
  • 原書: Effective Modern C++

オライリー・ジャパンで書籍を購入:
定価4,104円

Ebook Storeで電子版を購入:
価格3,283円

C++プログラマから絶大な支持を集めるC++界のカリスマ、スコット・メイヤーズが、優れたC++プログラムはどのように書けばよいのかを指南。C++をすみずみまで知り尽くした著者が、効果的かつ堅牢、移植性の高い優れたC++プログラムを書くノウハウを42項目にまとめています。さらに上を目指したい中上級者必携の一冊です。C++11/C++14対応。

関連書籍

C++ ライブラリ クイックリファレンス
C++クックブック
C++実践プログラミング 第2版
C++プログラミング入門 新版
Effective Python
Optimized C++

出版社より
謝辞
はじめに

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:要素の挿入の代わりに直接配置を検討する

査読者あと書き
索引

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]