C++言語解説:総合
2003/08/02
  • 2003年に作成したC++テキストの掘り起こしです。内容が古いですがご容赦ください(2018/07/01記)。
    • 当時の作成時間都合により、C++コンテンツの本体は等幅(Monospace)フォント表示が前提となっています。
    • そこで見た目を少しでも改善するためCSS(Cascading Style Sheets)の設定を変更しました。
    • Noto Sans CJK JPフォントをインストールすると、表示フォントがNoto Sans Mono CJK JPへ変更されます。


目次・・・[各内容へのリンク]

 ・本テキストは以下の要領で進行する予定です。
 
   準備 :参考文献と環境構築
 
   第1編 :構造化プログラミング
    ├1-1.学習の準備
    ├1-2.基本データ型
    ├1-3.プログラム制御文
    ├1-4.配列と文字列の基本
    ├1-5.ポインタ
    │ ├1-5-1.ポインタとは
    │ ├1-5-2.ポインタを意識する場面
    │ └1-5-3.ポインタのダークサイド
    ├1-6.関数の機能
    ├1-7.他のデータ型と演算子
    └1-8.構造体と共用体

   第2編 :オブジェクト指向プログラミング
    ├2-1.クラス
    ├2-2.演算子オーバーロード
    ├2-3.継承と仮想関数
    ├2-4.テンプレート
    ├2-5.RTTIとキャスト
    ├2-6.例外処理
    └2-7.C++の入出力システム

   第3編 :その他
    ├3-1.関数ポインタ
    ├3-2.ネームスペース
    └3-3.検証/assert

   付録:Cの入出力システム

   第4編 :STL基礎
    ├4-1.STL概要とコンテナ
    ├4-2.反復子
    ├4-3.アルゴリズム
    └4-4.関数オブジェクト



各項目の概要と学習の順序について

 ◆第1編:構造化プログラミング
   構造化プログラミングについて説明します。従来で言うところの「C言語」学習に相
   当していますが、説明する文法はC++に準拠します。

  ・1-1.学習の準備
    C/C++の言語を学習するための基礎を扱います。ここで取り上げた内容は、詳細と
    して後にもう一度学習することになります。(よっておまじない的内容です)。

  ・1-2.基本データ型
    変数、仮引数、変数の型、定数、エスケープシーケンス、基本となる演算子、キ
    ャストを扱います。

  ・1-3.プログラム制御文
    構造化プログラミングの基礎となる選択/反復の記述法について、if文、for文、
    switch文、while文、do-while文、continue文、break文、そしてgoto文について
    学習します。

  ・1-4.配列と文字列の基本
    C言語習得で「挫折経験」のある人は、ここから教育に参加することをお勧めしま
    す。C言語での文字列に対する考え方と配列の基本について学習します。

  ・1-5.ポインタ
    C/C++学習で第1鬼門となる内容です。ここがわからないと、この先の内容は絶対
    理解できません。ポインタの考え方、利用法、注意点を徹底的に解説します。(こ
    こは教育参加者が完全に理解できるまで、先には進みません)

  ・付録:Cの入出力システム
    C++ではなくCの標準入出力、ファイル入出力について学習します。C++の入出力シ
    ステムを理解するにはもう少し学習が必要なので、この段階でCベースの利用法
    習得し、早い段階からプログラミングの利益を享受できるようにします。

  ・1-6.関数の機能
    コマンドライン引数とプロトタイプ宣言。その他オブジェクト指向の準備として
    参照、関数オーバーロード、デフォルト引数を学習します。

  ・1-7.その他のデータ型と演算子
    変数のアクセス修飾子、記憶クラス修飾子、typedef、bit/条件演算子、省略記法、
    カンマ演算子、多重代入を学習します。またC++独自の動的メモリ確保についても
    扱います。

  ・1-8.構造体と共用体
    構造体、Cの構造体との違い、ビットフィールド、共用体について学習します。


 ◆第2編:オブジェクト指向プログラミング
   オブジェクト指向プログラミングを実現するためにC++が持つ機能について詳細を学
   習します。

  ・2-1.クラス
    クラスのメンバ、アクセス指定、スコープ解決演算子、コンストラクタ、デスト
    ラクタ、インライン関数、コンストラクタのオーバーロード、コピーコンストラ
    クタ
について学習します。
  
  ・2-2.演算子のオーバーロード
    クラスでは演算子を独自に実装することができます。この演算子関数、フレンド
    演算子関数を学習します。代入演算子とコピーコンストラクタの関係についても
    理解します。
  
  ・2-3.継承と仮想関数
    オブジェクト指向プログラミングの重要な機能です。継承の方法とアクセス制御、
    多重継承、仮想基本クラス、更に仮想関数を使用した多態性の実現方法までを学
    習します。
  
  ・2-4.テンプレート
    プログラムコードを再利用するために用意された機能がテンプレートです。テン
    プレートの構造について学習します。
  
  ・2-5.RTTIとキャスト
    ポリモーフィズムの実装により重要となる、実行時型識別の機能と、C++で追加さ
    れたキャストについて学習します。
  
  ・2-6.例外処理
    エラー処理の基本となる例外処理について学習します。C++の例外処理は多種有り
    ますが、ここでは標準的処理を対象とします。
  
  ・2-7.C++の入出力システム
    C++ではクラス/型の独自定義とポリモーフィズムの機能をサポートするため、入
    出力についても独自機能を実装できるようになっています。独自入出力システム
    の定義方法を理解します。


 ◆第3編:その他
   ここでは理解を更に深める内容を扱います。

  ・3-1.関数ポインタ
    今まで何気なく使ってきた「関数名」について改めて考えてみます。実は関数名
    もポインタなのです。

  ・3-2.ネームスペース
    ネームスペースはC++の中でも比較的新しい機能です。「コードの再利用」を前提
    としたC++プログラミングでは必須となる、変数名/関数名/クラス名のローカライ
    ズ機能について説明します。

  ・3-3.検証/assert
    プログラムが正しいことはどうすれば検証できるのでしょうか。ここでは検証論
    の土台となるホーア論理の基礎とassertの使い方について考えていきます。


 ◆第4編:STL基礎
   STL(Standard Template Library)の基礎を扱います。

  ・4-1.STL概要とコンテナ
    STLの概要として目的と構成を説明します。実際に少しだけSTLのコーディングを
    体験し、STLを利用したプログラミングの導入とします。

  ・4-2.反復子
    コンテナの要素へアクセスするために、STLでは反復子を利用します。ここでは反
    復子の概要とプログラミング例を学習します。

  ・4-3.アルゴリズム
    アルゴリズムはコンテナに対して複雑な処理を行います。ここではアルゴリズム
    の種類と、代表的アルゴリズムの使用方法を学習します。

  ・4-4.関数オブジェクト
    コンテナやアルゴリズムを利用する際、コンテナ内のデータ要素への処理、又は
    要素をオペランドとしたコンテナ間の処理等を行いたい場合があります。STLでは
    四則/論理演算等の処理に対応した関数オブジェクトと呼ばれるクラスが用意され
    ていますが、ここでは「関数オブジェクトとは何か」について考えます。

                                       以上

[Revision Table]
 |Revision |Date    |Comments
 |----------|-----------|-----------------------------------------------------
 |1.00   |2002-05-05 |初版
 |1.01   |2002-05-12 |誤字修正,リンク追加
 |1.10   |2002-05-19 |リンク修正,リンク追加,項目変更
 |1.11   |2002-05-26 |リンク追加
 |1.12   |2002-06-02 |リンク追加,項目修正
 |1.13   |2002-06-08 |リンク追加(1-5-3)
 |1.14   |2002-06-16 |リンク追加(Cの入出力システム)
 |1.15   |2002-06-23 |リンク追加(関数の機能) + 項目修正
 |1.16   |2002-06-30 |リンク追加(他のデータ型と演算子)(基本データ型)
 |1.17   |2002-07-02 |リンク追加(構造体と共用体)
 |1.18   |2002-07-06 |リンク追加(オブジェクト指向プログラミング)
 |1.19   |2002-07-07 |リンク追加(クラス)
 |1.20   |2002-07-14 |リンク追加(演算子オーバーロード)
 |1.21   |2002-07-22 |リンク追加(継承と仮想関数)
 |1.22   |2002-07-28 |リンク追加(テンプレート)
 |1.23   |2002-07-30 |リンク追加(RTTIとキャスト)
 |1.24   |2002-08-01 |リンク追加(例外処理)
 |1.25   |2002-08-08 |リンク追加(入出力ストリーム)
 |1.26   |2002-08-15 |リンク追加(プログラム制御文)
 |1.27   |2002-08-18 |誤字修正
 |1.28   |2002-08-25 |リンク追加(関数ポインタ)
 |1.29   |2003-02-16 |リンク追加(検証/assert)
 |1.30   |2003-08-02 |リンク追加(ネームスペース)
 |1.31   |2018-07-01 |リンク追加(STL基礎)
[end]
Copyright(C) 2002 Altmo
本HPについて