標準プログラマーズ ライブラリシリーズC++クラスと継承完全制覇

書籍の概要

この本の概要

「なぜオブジェクト指向なのか?」,「そもそもオブジェクト指向とはなにか?」という視点から,難解なC++のオブジェクト指向にまつわる言語仕様を解き明かします。C++が備える言語構文はもちろん,オブジェクト指向プログラミングの“思想”がわかる1冊です。

こんな方におすすめ

  • C言語からC++にステップアップしたい方
  • かつてC++に挫折した経験のある方
  • UMLやオブジェクト指向プログラミングを基礎から学びたい方

著者の一言

本書は,C++を使ってオブジェクト指向プログラミング(OOP)の考え方をマスターするための入門書です。C言語はできたのにC++ができない人や,JavaやC#に挑戦したが挫折したという人にぜひお読みいただきたいと思います。OOPには様々なテクニックがありますが,何が必須で,何がオプションなのか,そして何の役に立つのかを説明します。OOPに対する疑問を一気に解消しましょう!

目次

第1章 クラスの親戚=構造体

  • 1-1 構造体の定義
    • 1-1-1 構造体とは?
    • 1-1-2 構造体のメンバ
    • 1-1-3 構造体の用途
  • 1-2 構造体の使い方
    • 1-2-1 構造体は型である
    • 1-2-2 メンバの取り扱い
    • 1-2-3 構造体どうしの代入
  • 1-3 構造体の配列
    • 1-3-1 構造体の配列の用途
    • 1-3-2 構造体の配列をメンバにする
  • 1-4 構造体のポインタ
    • 1-4-1 構造体のポインタの宣言
    • 1-4-2 アロー演算子の使い方
  • 1-5 構造体を引数として渡す
    • 1-5-1 構造体のポインタを引数に渡す
    • 1-5-2 構造体のポインタを戻り値で返す

第2章 オブジェクト指向プログラミングとクラスの基本

  • 2-1 モノに注目するとは?
    • 2-1-1 手続き型プログラミングで作成した「じゃんけんゲーム」
    • 2-1-2 オブジェクト指向プログラミングで作成した「じゃんけんゲーム」
  • 2-2 なぜオブジェクト指向なのか?
    • 2-2-1 オブジェクト指向プログラミングのメリット
    • 2-2-2 モデリングの考え方
  • 2-3 構造体とクラスの違い
    • 2-3-1 メンバ変数とメンバ関数
    • 2-3-2 じゃんけんゲームの完全なコード

第3章 クラスとオブジェクト

  • 3-1 クラスの定義
    • 3-1-1 クラスを定義する構文
    • 3-1-2 メンバ関数の実装
    • 3-1-3 インライン関数
  • 3-2 クラスの使い方
    • 3-2-1 クラスとオブジェクトの違い
    • 3-2-2 クラスの定義と実装を分ける場合
    • 3-2-3 インライン関数を使った場合
    • 3-2-4 クラスの定義と実装を1つのソースコードに書く場合
  • 3-3 メンバ関数のオーバーロード
    • 3-3-1 オブジェクト指向の三本柱
    • 3-3-2 メンバ関数のオーバーロードによる多態性
    • 3-3-3 オーバーロード活用の2つのパターン
  • 3-4 オブジェクトを引数として渡す
    • 3-4-1 オブジェクトの配列とポインタ
    • 3-4-2 オブジェクトを引数や戻り値とする関数

第4章 カプセル化とコンストラクタ

  • 4-1 カプセル化
    • 4-1-1 アクセス指定子の種類と役割
    • 4-1-2 カプセル化の目的
    • 4-1-3 カプセル化活用の2つのパターン
  • 4-2 コンストラクタとデストラクタ
    • 4-2-1 コンストラクタの定義
    • 4-2-2 コンストラクタのオーバーロード
    • 4-2-3 デストラクタ

第5章 クラスの継承

  • 5-1 クラスを継承するとは?
    • 5-1-1 継承というクラスの使い方
    • 5-1-2 protected:の機能
    • 5-1-3 継承におけるアクセス指定子の役割
  • 5-2 継承の活用方法
    • 5-2-1 再利用としての継承
    • 5-2-2 汎化と継承
  • 5-3 継承におけるコンストラクタとデストラクタの取り扱い
    • 5-3-1 コンストラクタとデストラクタは継承されない
    • 5-3-2 引数を持つコンストラクタの呼び出し

第6章 メンバ関数のオーバーライドと多態性

  • 6-1 メンバ関数のオーバーライド
    • 6-1-1 基本クラスのメンバ関数を派生クラスでオーバーライドする
    • 6-1-2 基本クラスのメンバ関数を呼び出す
  • 6-2 メンバ関数のオーバーライドによる多態性
    • 6-2-1 オブジェクト指向プログラミングの復習
    • 6-2-2 オーバーライドで多態性を実現する
    • 6-2-3 純粋仮想関数と抽象クラス

第7章 オブジェクトの作成と破棄

  • 7-1 オブジェクトと一般的な変数の類似点
    • 7-1-1 ローカルオブジェクトとグローバルオブジェクト
    • 7-1-2 静的オブジェクト
  • 7-2 静的メンバ変数
    • 7-2-1 staticキーワードを指定したメンバ変数
    • 7-2-2 オブジェクト数をカウントする

第8章 オブジェクトの動的な作成と破棄

  • 8-1 動的オブジェクト
    • 8-1-1 new演算子とdelete演算子の使い方
    • 8-1-2 プログラム実行時のメモリの使われ方
  • 8-2 コンポジション
    • 8-2-1 メンバオブジェクト
    • 8-2-2 メンバオブジェクトのコンストラクタとデストラクタ

第9章 コピーコンストラクタとフレンド関数

  • 9-1 コピーコンストラクタ
    • 9-1-1 関数にオブジェクトを渡す場合の問題
    • 9-1-2 コピーコンストラクタによる解決
    • 9-1-3 オブジェクトを代入する場合の問題
  • 9-2 フレンド関数
    • 9-2-1 フレンド関数とは?
    • 9-2-2 フレンド関数の活用方法
    • 9-2-3 thisポインタ

第10章 その他のテクニック

  • 10-1 演算子のオーバーロード
    • 10-1-1 代入演算子のオーバーロード
    • 10-1-2 算術演算子のオーバーロード
    • 10-1-3 比較演算子のオーバーロード
    • 10-1-4 フレンド関数を使って演算子をオーバーロードする
  • 10-2 オブジェクト指向プログラミングの2つの技
    • 10-2-1 テンプレートクラス
    • 10-2-2 ダブルディスパッチ
  • Column:C言語のキモである構造体とポインタ
  • Column:UMLの9種類の図からオブジェクト指向の考え方を知る
  • Column:オブジェクト指向で最も重要なのは・・・
  • Column:JavaとC#の終了処理
  • Column:継承ができない準オブジェクト指向型言語Visual Basic 6.0
  • Column:C++ならではの特徴である多重継承
  • Column:スルドイあなたへ・・・
  • Column:メモリリークに要注意!
  • Column:便利なstringクラス
  • Column:Visual C++専用のクラスライブラリであるMFCとATL

INDEX

著者プロフィール

矢沢久雄(やざわひさお)