書籍概要

新・標準プログラマーズライブラリ

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

著者
発売日
更新日

概要

「C言語からC++にステップアップしたい」「スムーズにC++のキモをつかみたい」「クラスや継承の考え方になじみたい」……。そんな声の数々に,丁寧に応えるのが本書です。「C言語からC++へ」「クラスとオブジェクト指向の超基本」「オブジェクト指向の本質」「オブジェクト指向プログラミングのテクニック」と,着実なステップで進んでいきます。15年以上にわたってプログラマの皆さまの支持を集め,多くの学校でもテキスト採用されてきたC++の定番書が,装いも新たに登場!確認問題やプログラムのコンパイル方法をナビする付録も付いています。

こんな方におすすめ

  • C++やオブジェクト指向プログラミングを独習する方
  • C言語からのステップアップを目指す方
  • 学校などのテキストとして,わかりやすいC++の本を探している方

目次

第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 ダブルディスパッチ
  • 10-3 三目並べゲームを作る
    • 10-3-1 三目並べゲームの仕様
    • 10-3-2 三目並べゲームのプログラム

付録 コンパイラの入手方法,インストール方法,コンパイル方法

  • A-1 Visual Studio Community 2017の入手方法とインストール方法
  • A-2 Visual Studio Community 2017を使ったコンパイル方法
  • A-3 MinGWの入手方法とインストール方法
  • A-4 MinGWを使ったコンパイル方法

確認問題

  • 第1章 確認問題
  • 第2章 確認問題
  • 第3章 確認問題
  • 第4章 確認問題
  • 第5章 確認問題
  • 第6章 確認問題
  • 第7章 確認問題
  • 第8章 確認問題
  • 第9章 確認問題
  • 第10章 確認問題
  • 確認問題の解答

コラム

  • COLUMN C言語のキモである構造体とポインタ
  • COLUMN UMLからオブジェクト指向の考え方を知る
  • COLUMN オブジェクト指向で最も重要なのは……
  • COLUMN GoFデザインパターンからオブジェクト指向活用のポイントを知る
  • COLUMN 継承はOCPを実践するものである
  • COLUMN C++ならではの特徴である多重継承
  • COLUMN スルドイあなたへ……
  • COLUMN メモリリークに要注意!
  • COLUMN 便利なstringクラス
  • COLUMN C++の標準ライブラリのヘッダーファイルに拡張子がない理由

サポート

ダウンロード

(2021年1月4日更新)

本書に掲載されているサンプルプログラム
samples.zip

サンプルプログラムの一部に誤りが見つかったため,samples.zip内のファイルを修正しました。2021年1月4日より前にダウンロードされている方は,お手数ですが再度ダウンロードしていただけますよう,お願いいたします。

本書に掲載されているサンプルプログラムをダウンロードいただけます。
ZIP形式で圧縮されていますので,解凍してからお使いください。

解凍が終わると「chapter01」~「chapter10」までの10のフォルダが表示されます。「chapter01」は本書の第1章を,「chapter10」は本書の第10章を表します。
各フォルダには「.cpp」「.c」「.h」形式のファイルを収めています。

サンプルプログラムのコンパイル方法や実行方法については,本書のP.291~P.299をご覧ください。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2021年1月4日最終更新)

第1刷~第3刷での修正。第4刷以降では修正済み
P.80 List 3-8の8行目


void showMessage(const char *a, int n);

void showMessage(const char *s, int n);

商品一覧