C++クラスと継承完全制覇
シープラスプラス クラス ト ケイショウ カンゼン セイハ
- 著者:
- 矢沢久雄(ヤザワ, ヒサオ)
- 出版社:
- 技術評論社
- 出版日:
- 2017年12月
- ISBN:
- 9784774193823
- シリーズ:
- 新・標準プログラマーズライブラリ
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
技書の森解説
C 言語の構造体から入って C++ のクラスと継承を学ぶ入門書で、版元は C 言語からのステップアップを目指す人などを読者に挙げています。『C++クラスと継承完全制覇』 (矢沢久雄 著、技術評論社、2017 年 12 月 7 日発売) は新 / 標準プログラマーズライブラリの 1 冊で、国立国会図書館の書誌には 2002 年刊の本のリニューアルと記されています。版元の概要によれば、「C 言語から C++ へ」「クラスとオブジェクト指向の超基本」「オブジェクト指向の本質」「オブジェクト指向プログラミングのテクニック」という順に進み、確認問題と、プログラムのコンパイル方法を案内する付録が付いています。
構造体から三目並べまで、全 10 章と付録の構成
本文は全 10 章です。第 1 章「クラスの親戚=構造体」で C 言語の構造体とそのポインターを確認し、第 2 章「オブジェクト指向プログラミングとクラスの基本」では手続き型とオブジェクト指向の 2 通りで作った「じゃんけんゲーム」を比べます。第 3 章「クラスとオブジェクト」、第 4 章「カプセル化とコンストラクタ」、第 5 章「クラスの継承」、第 6 章「メンバ関数のオーバーライドと多態性」と進んで、第 6 章には純粋仮想関数を扱う節があります。後半は第 7 章「オブジェクトの作成と破棄」、第 8 章「オブジェクトの動的な作成と破棄」、第 9 章「コピーコンストラクタとフレンド関数」、第 10 章「その他のテクニック」で、第 10 章は演算子のオーバーロード、テンプレートクラスとダブルディスパッチ、三目並べゲームの作成を扱います。巻末には Visual Studio Community 2017 と MinGW の入手とコンパイル方法の付録、第 1 章から第 10 章までの確認問題と解答があります。目次には UML や GoF デザインパターン、多重継承、メモリリーク、string クラスなどを題にしたコラムも挙がっています。
仮想関数による多態性と、コピーで壊れるオブジェクト
C 言語に無い仕組みのうち、本書の後半が扱うものが 2 つあります。1 つは仮想関数です。基底クラスのポインターや参照から関数を呼んだとき、どの派生クラスの実装が動くかを実行時に決める仕組みが 多態性 で、呼び出し側のコードを変えずに新しい派生クラスを足せます。これは拡張に開き修正に閉じるという 開放閉鎖の原則 の典型的な実現方法でもあります。実装を持たない純粋仮想関数を 1 つでも含むクラスは 抽象クラス になり、それ自体からはオブジェクトを作れません。もう 1 つはオブジェクトの寿命とコピーです。new で確保した領域をポインターとして持つクラスを既定のコピーで複製すると、2 つのオブジェクトが同じ領域を指し、両方のデストラクタが同じ領域を解放して壊れます。これを防ぐにはコピーコンストラクタと代入演算子とデストラクタを組で定義する必要があり、本書では第 8 章で new 演算子と delete 演算子、第 9 章でコピーコンストラクタ、第 10 章で代入演算子のオーバーロードを扱います。
版元が挙げる読者と、目次に無い話題
版元が挙げる対象は、C++ やオブジェクト指向プログラミングを独習する人、C 言語からのステップアップを目指す人、学校などのテキストとして分かりやすい C++ の本を探している人です。各章に確認問題と解答があります。一方で、付録が扱う開発環境は Visual Studio Community 2017 と MinGW で、目次の節題にスマートポインターや例外処理、ラムダ式を掲げたものはありません。動的なオブジェクトの管理は new 演算子と delete 演算子で扱われます。構造体からクラス、カプセル化、継承、多態性、動的なオブジェクトとコピーの扱いまでを、本書は全 10 章と各章の確認問題、コンパイラーの付録に収めています。
言及した記事 (1 件)
この本に興味がある方におすすめ
関連する本
矢沢久雄 の他の書籍
関連記事
写経を超える - 技術書のコードを自分のプロジェクトに応用する方法
技術書のサンプルコードを写経するだけでは実力は伸びません。書籍のコードを自分のプロジェクトに応用し、実務で使える力に変える 5 つのステップを解説します。
副業エンジニアの武器になる 1 冊の見つけ方
副業で技術力を売るエンジニアが、限られた時間で最大のリターンを得る選書戦略と、本業との差別化に効く本の選び方を解説します。
本を読まないテックリードと、本を読むジュニアの逆転劇
経験年数だけでは技術力は測れません。読書習慣のあるジュニアが、読書しないテックリードを設計力で追い抜く場面が生まれる理由と、そこから学べる教訓を考えます。
関連用語
S3 ライフサイクル
S3 オブジェクトのストレージクラスを自動的に移行し、コストを最適化する機能
オブジェクト指向
データと操作をオブジェクトとしてまとめ、現実の概念に近づけて設計する考え方
エンティティと値オブジェクト
DDD における 2 つの基本的なドメインモデル要素 - 同一性で区別するエンティティと、値で区別する値オブジェクト
ファクトリパターン
オブジェクトの生成ロジックをカプセル化し、生成方法の詳細を隠蔽するデザインパターン
State パターン
オブジェクトの内部状態に応じて振る舞いを切り替え、状態遷移を明示的にモデル化するデザインパターン
Flyweight パターン
多数のオブジェクト間で共有可能な状態を分離し、メモリ使用量を削減するデザインパターン