目次

T. 基礎編
1章 C++ とは何か
	1.1 C++ 小史
	1.2  C++ プログラムの構造
	1.3 C++ 修得方法

2章 プログラム記述の基本
	2.1 プログラムの構想から実行まで
		2.1.1 ラッパ(Wrappers)
	2.2 実際のプログラム作成
	2.3 コマンド行コンパイラを使ったプログラム作成
		2.3.1 手順1:プログラム格納場所の作成
		2.3.2 手順2:プログラムの作成
		2.3.3 手順3:コンパイラの実行
		2.3.4 手順4:プログラムの実行
	2.4 統合開発環境を使ったプログラム作成
		2.4.1 手順1:プログラム格納場所の作成
		2.4.2 手順2:プログラムの入力、コンパイルおよび実行
	2.5 UNIX のヘルプ
	2.6 統合開発環境のヘルプ
	2.7 プログラミング実習

3章 スタイル
	3.1 コメント
	3.2 C++ のコード
	3.3 名前付けのスタイル
	3.4 コーディング信奉
	3.5 インデントとコードのスタイル
	3.6 わかりやすさ
	3.7 簡潔さ
	3.8 一貫性および構成
	3.9 新たなスタイル
	3.10 まとめ 

4章 基本的な宣言および式
	4.1 プログラムの要素
	4.2 基本的なプログラム構造
	4.3 簡単な式
	4.4 cout 出力クラス
	4.5 変数および格納場所
	4.6 変数宣言
	4.7 整数型
	4.8 代入文
	4.9 活動小数点数
	4.10 活動小数点型の除算と整数型の除算
	4.11 文字型
	4.12 論理型
	4.13 プログラミング実習
	4.14 設問の解答

5章 配列、修飾子および数値の使用
	5.1 配列
	5.2 文字列
	5.3 データの入力
	5.4 変数の初期化
	5.5 多次元配列
	5.6 種々の整数型
		5.6.1 種々の整数型のまとめ
	5.7 種々の活動小数点型
	5.8 定数の宣言と参照型の宣言
	5.9 修飾子
		5.9.1 スペシャル
		5.9.2 クラス
		5.9.3 サイズ
		5.9.4 符号
		5.9.5 型
	5.10 16進数および8進数
	5.11 簡略化演算子
	5.12 副作用
	5.13 プログラミング実習
	5.14 設問の解答

6章 条件文と制御文
	6.1 if 文
	6.2 else 文
	6.3 strcmp の使ってはいけない方法
	6.4 ループ文
	6.5 while 文
	6.6 break 文
	6.7 continue 文
	6.8 どこでも代入できることによる副作用
	6.9 プログラミング実習
	6.10 設問の解答

7章 プログラミング手順
	7.1 セットアップ
	7.2 仕様書
	7.3 コード設計
	7.4 プロトタイプ
	7.5 Makefile
	7.6  テスト
	7.7 デバック
	7.8 保守
	7.9 改訂
	7.10 電子的考古学
	7.11 プログラムの注釈付け
	7.12 デバッガの利用
	7.13 テキストエディタのブラウザ的使用
	7.14 コメントの付加
	7.15 プログラミング実習

U 単純なプログラム

8章 他の制御文
	8.1 for 文
	8.2 switch 文
	8.3 switch ,break および continue
	8.4  プログラミング実習
	8.5 設問の解答

9章 変数スコープおよび関数
	9.1 スコープおよび記憶クラス
	9.2 関数
		9.2.1 const パラメータとリターン値
		9.2.2 参照パラメータとリターン値
		9.2.3 懸垂参照(Dangling References)
		9.2.4 配列パラメータ
		9.2.5 関数の多重定義
		9.2.6 デフォルトパラメータ
		9.2.7 使用されないパラメータ
		9.2.8 inline 関数
	9.3 パラメータ型のまとめ
	9.4 構造化プログラミングの基礎
	9.5 再帰
	9.6 プログラミング実習
	9.7 設問の解答

10章 C++ プリプロセッサ
	10.1 #define 文
		10.1.1 #define 対 const
	10.2  条件付きコンパイル
	10.3 #include ファイル
	10.4 パラメータをとるマクロ
		10.4.1 # 演算子
		10.4.2 パラメータをとるマクロ対インライン関数
	10.5 高度な機能
	10.6 まとめ
	10.7 プログラミング実習
	10.8 設問の解答

11章 ビット演算
	11.1 ビット演算子
	11.2 AND 演算子 (&)
	11.3  ビット単位 OR (l)
	11.4  ビット単位排他的 OR (^)
	11.5  複数演算子 (NOT)(~)
	11.6  左シフト演算子と右シフト演算子(<<, >>)
		11.6.1  右シフトの詳細
	11.7 ビットのセット、クリアおよびテスト
	11.8 ビットマップグラフィックス
	11.9 プログラミング実習
	11.10 設問の解答

V. 高度な型およびクラス

12章 高度な型
	12.1 構造体
	12.2 共用体
	12.3 typedef
	12.4  enum 型
	12.5 ビットフィールドまたは構造体の圧縮
	12.6 構造体配列
	12.7 プログラミング実習

13章 簡単なクラス
	13.1 スタック
		13.1.1 スタックの設計
	13.2 改良スタック
	13.3 クラスの使用
	13.4 コンストラクタおよびデストラクタの導入
		13.4.1 デストラクタ
		13.4.2 パラメータをとるコンストラクタ
		13.4.3 パラメータをとるデスクトラクタ
		13.4.4 コピーコンストラクタ
	13.5 自動生成メンバ関数
		13.5.1 自動的に生成、使用される関数
	13.6 簡易手法
	13.7 スタイル
	13.8 プログラミング実習

14章 さらにクラスについて
	14.1 フレンド
		14.1.1  フレンドクラス
	14.2 定数に使用する関数
	14.3 定数メンバ
	14.4 静的メンバ変数
	14.5 静的メンバ関数
	14.6 static の意味
	14.7 プログラミング実習

15章 単純なポインタ
	15.1 定数ポインタ
	15.2 ポインタとプリント
	15.3 ポインタと配列
	15.4 文字列分割
	15.5 ポインタと構造体
	15.6 コマンド行引数
	15.7 プログラミング実習
	15.8 設問の解答

W.  高度なプログラミング概念

16章 ファイル入出力
	16.1 C++ のファイル I/O
		16.1.1 出力ファイル
	16.2 変換ルーチン
	16.3 バイナリファイルとASCII ファイル
	16.4  行終端にまつわる謎
	16.5 バイナリ I/O
	16.6  バッファリングの問題
	16.7 バッファリングを行なわない I/O
	16.8  ファイル形式の設計
	16.9 C の I/O ルーチン
	16.10 C 変則ルーチン
	16.11 C のバイナリ I/O
	16.12  プログラミング実習
	16.13 設問の解答

17章 デバッグと最適化
	17.1 デバック
	17.2 シリアルデバック
	17.3 分割統治
	17.4 デバック専用コード
	17.5 デバックコマンド行スイッチ
	17.6 出力のチェック
	17.7 対話型デバッガ
	17.8 二分探索のデバッグ
	17.9 実行時エラー
	17.10 告白的方法によるデバッグ
	17.11 最適化
	17.12 強力な2 の累乗
	17.13 最適化の手法
	17.14 ケーススタディ:インライン関数対通常の関数
	17.15 ケーススタディ:カラーレンダリングアルゴリズムの最適化
	17.16 プログラミング実習
	17.17 設問の解答

18章 演算子の多重定義
	18.1 演算子関数
		18.1.1 二項算術演算子
		18.1.2 関係演算子
		18.1.3 単項演算子
		18.1.4 簡略演算子
		18.1.5 インクリメントおよびデクリメント演算子
		18.1.6 論理演算子
		18.1.7 I/O 演算子
		18.1.8 インデックス演算子”[]”
		18.1.9 new および delete
		18.1.10  めったに使わない演算子
	18.2 メンバ関数としての演算子
		18.2.1 キャスト
	18.3 complex クラスの完全な定義
	18.4 プログラミング実習
	18.5 設問の解答

19章 浮動小数点
	19.1 浮動小数点の形式
	19.2 浮動小数点の加算/減算
	19.3 乗算
	19.4 除算
	19.5 オーバーフローとアンダーフロー
	19.6 丸め誤差
	19.7 精度
	19.8 丸め誤差の最小化
	19.9 精度の決定
	19.10 精度と速度
	19.11 べき級数
	19.12 プログラミング実習

20章 高度なポインタ
	20.1 ポインタ、構造体およびクラス
	20.2 delete 演算子
	20.3 リンクリスト
	20.4 順序付きリンクリスト
	20.5 二重リンクリスト
	20.6 ツリー
	20.7 ツリーのプリント
	20.8 プログラムの残りの部分
	20.9  チェスプログラムのデータ構造
	20.10 プログラミング実習
	20.11 設問の解答

21章 高度なクラス 
	21.1 派生クラス
	21.2 仮想関数
	21.3 仮想クラス
	21.4 派生クラスに隠ぺいされた関数
	21.5 派生クラスのコンストラクタおよびデスクトラクタ
	21.6 まとめ
	21.7 プログラミング実習
	21.8 設問の解答

X. 他の言語機能

22章 例外 
	22.1 スタック例外
	22.2 ランタイムライブラリ例外
	22.3 プログラミング実習

23章 モジュールプログラミング
	23.1 モジュール
	23.2 公開と非公開
	23.3 extern 修飾子
	23.4 ヘッダ
	23.5 モジュールの本体
	23.6 無限配列を使用するプログラム
	23.7 複数ファイルの Makefile
	23.8  無限配列の使用
	23.9 タスクのモジュール化
	23.10 モジュール分割の例:テキストエディタ
	23.11 モジュール分割の例:コンパイラの構築
	23.12 モジュール分割の例:スプレッドシート
	23.13 モジュール設計のガイドライン
	23.14 プログラミング実習

24章 テンプレート
	24.1 テンプレートとは
	24.2 テンプレート:困難な道のり
	24.3 関数の特殊化
	24.4 クラステンプレート
	24.5 クラスの特殊化
	24.6 実装の困難性
		24.6.1 Microsoft 社の実装
		24.6.2 Turbo-C++ およびGNU g++ のテンプレート
		24.6.3 CFront ベースのコンパイラ
		24.6.4 移植性のあるテンプレートの記述
	24.7 まとめ
	24.8 プログラミング実習

25章 移植性の問題
	25.1 モジュール性
	25.2 語サイズ
	25.3 バイト順問題
	25.4 境界整列問題
	25.5 ヌルポインタ問題
	25.6 ファイル名問題
	25.7 ファイルタイプ
	25.8 まとめ 
	25.9 設問の解答

26章 まとめのプログラム
	26.1 要求仕様
	26.2 コード設計
		26.2.1 トークンモジュール
		26.2.2 文字型モジュール
		26.2.3 統計クラス
	26.3 コーディング
	26.4 機能仕様 
		26.4.1 char_type クラス
		26.4.2 input_file クラス
		26.4.3 token クラス
		26.4.4 stat クラス
		26.4.5 line_counter クラス
		26.4.6 brace_counter クラス
		26.4.7 paren_counter クラス
		26.4.8 comment_counter クラス
		 26.4.9 do_file プロシジャ
	26.5 テスト
	26.6 改訂
	26.7 最終警告
	26.8 プログラムファイル
		         26.8.1 ch_type.h ファイル
		         26.8.2 ch_type.cc ファイル
		         26.8.3 token.h ファイル
		         26.8.4 token.cc ファイル
		         26.8.5 stat.cc ファイル
		         26.8.6 CC 用 UNIX Makefile (汎用 Unix)
		         26.8.7  g++用 UNIX Makefile
		         26.8.8  Turbo C++ Makefile
		         26.8.9  Borland-C++ Makefile
		         26.8.10  Microsoft Visual C++ Makefile
	26.9  プログラミング実習

27章 C から C++ へ
	27.1 概要
	27.2 K & R 型関数
	27.3 構造体
	27.4 malloc と free
	27.5  構造体のクラスへの変換
	27.6 setjmp と longjmp
	27.7 まとめ
	27.8 プログラミング実習

28章 あまり使用しない C++ の機能
	28.1  do/while
	28.2  goto
	28.3  ?: 構造
	28.4 カンマ演算子
	28.5 ()演算子の多重定義
	28.6 メンバへのポインタ
	28.7 陽の目を見ない機能
	28.8 設問の解答

29章 プログラミングに関する格言
	29.1 プログラミング一般
	29.2 設計
	29.3 宣言
	29.4 switch 文
	29.5 プリプロセッサ
	29.6 スタイル
	29.7 コンパイル
	29.8 C++ プログラマへの十戒
	29.9 終りに
	29.10 設問の解答

Y. 付録

付録A ASCII コード表
付録B 値域
付録C  演算子優先ルール
   C.1 演算子優先ルールの実用サブセット
   C.2 標準ルール
付録D  累乗級数を使った正弦値の算出
   D.1 Makefile (UNIX の Makefile)
   D.2  プログラム:sine.cc
用語解説
索引


書籍についてのお問い合わせは以下までお願いします。

株式会社オライリー・ジャパン

〒160-0003 東京都新宿区本塩町7番地6 四谷ワイズビル
phone:03-3356-5227 fax:03-3356-5261 e-mail:japan@oreilly.com


書籍の購入方法トップページへ戻る