Cの延長としての C++ 入門
価格: ¥0
-- プログラミング学習サイト「Programming Place」の作者による、C言語習得者のための C++入門書。
本書は、C++ の機能解説を中心とした入門書です。C言語を使った開発を経験されていることが望ましいですが、一般的な入門書を理解できていれば、読むことができるレベルだと思います。
本書の目的は、いつまでもC言語の世界に留まっていないで、C++ へ移行していただくことです。C++ は「難しい」「複雑」「巨大」のような、移行を躊躇してしまうようなイメージが多いようです。C言語に慣れた人の中には「オブジェクト指向」なんていう謎の考え方に馴染めないということで、移行できずにいる人もいるかも知れません。
C++ は、様々なプログラミングスタイルを許してくれる言語です。C++ はオブジェクト指向でプログラムを書くことを強制しませんし、C言語のようなスタイルでプログラムを書くことも許してくれます。また、C++ に用意されている多数の機能は、その一部だけを導入することができますから、全体像を把握しないと使えないなんてこともありません。要は、導入の進め方次第で、難易度は大きく変わるということです。
本書では、C言語の延長線上の考え方で導入できると思われる機能を優先して解説しています。例えば、オブジェクト指向の考え方はほとんど登場しません。それでも C++ への移行には価値があることを示したいと思います。
※本書では、環境構築に関する説明は行っていません。
※本書のサンプルプログラムは、VisualStudio 2017、gcc 7.1 で動作確認を行っています。
目次(一部抜粋)
* はじめに
** 本書の内容
** C と C++ の歴史
** コンパイラについて
** C++ が難しいというのは本当か
** C より C++ を使うべき理由
* 基本的なこと
** ファイルの拡張子
** コンパイルの方法
** コメントのスタイル
** 仮引数が空の場合の意味
** main関数の末尾の return文の省略
** タグ名の省略
** ローカル変数を宣言する位置
* 名前空間
** 名前空間の外から名前を使うとき
** 名前空間内で名前を使うとき
** 別の名前空間の名前を使うとき
** std名前空間
** 名前空間の分割
** usingディレクティブ
** 無名名前空間
* 型と定数
** キャスト
** 論理型
** ヌルポインタの表現
** 積極的に const を使う
** 文字定数
** 文字列定数
* 関数
** 関数宣言
** 関数オーバーロード
** 関数テンプレート
** テンプレート実引数を明示する
** 関数テンプレートを定義する位置
** 入出力機能
** インライン関数
** 関数形式マクロを避ける
* クラス
** クラスとは
** アクセス指定
** メンバ関数
** クラスやメンバ関数の定義を書く位置
** メンバ関数の定義をクラス定義内に書く
** メンバ関数を使う理由
** constメンバ関数
** コンストラクタ
** デストラクタ
** 変数や関数以外のメンバ
* クラステンプレート
** クラステンプレート
** クラステンプレートを定義する位置
** std::basic_string
** std::vector
** std::list
** std::stack
* 動的なオブジェクトの生成
** new と delete
** new[] と delete[]
** new や new[] が失敗したとき
** RAII
* C との連携
** C++ から C のコードを使う
** stdio と iostream の連携
* あとがき