本書は、C++の基本的な文法を学び終えたばかりの初心者が、文法の学習から実践的なプログラミングの習得へステップアップするための支えとなることを目的にしています。そのために、C++プログラミングにおいてよくある間違い、必須のテクニック、ライブラリの活用方法やクラス定義を学ぶためのポイントなどを82個のトピックに分け、トピックごとにコード例を提示しながら詳しく説明します。各トピックには、必ずBADなサンプルプログラムとGOODなサンプルプログラムを用意しています。BADなプログラムはどこが悪いのか、GOODなプログラムを書くにはどこに気をつければよいのかを「体感」することにより、C++のプログラミングテクニックを磨いていきましょう。
第1章 さあ、C++コードを書いてみよう
標準ライブラリが使えないのはなぜ?~名前空間その1
名前空間スコープをまとめて解決するには?~名前空間その2
staticなグローバル変数はやめよう!~名前空間その3
printf()系関数を使うのはやめよう!~標準入出力ストリームを使う
C++では同じ名前の関数を定義してもいいの?~関数の多重定義
入出力マニピュレータをうまく使用できない!
第2章 C言語との技術的な違いを整理しておこう
引数付きマクロを使うのはやめよう~インライン関数を使う
論理値をbool型に格納しよう!
constの変数には値を代入できないの?
記号定義を使うのはやめよう~名前付き定数を使う
変数の宣言位置とスコープ解決演算子を理解しておこう
Cの型キャスト演算子を使うのはやめよう~static_cast演算子を使う
関数呼び出しでは注意しよう!~関数のプロトタイプ宣言
タグ名と型名の違いに気をつけよう!~struct、union、enum
関数のプロトタイプ宣言がクラス名と堂々巡りになってしまう!
CモジュールをC++プログラムとリンクしたい
第3章 オブジェクト指向の考え方に切り替えよう
参照の使い方がよくわからない
ポインタ型の戻り値と参照型の戻り値がエラーになるのはなぜ?
stringクラス型のオブジェクトを生成したい~コンストラクタ
クラスのメンバ変数にアクセスできない!~staticなメンバ
stringオブジェクトの文字列にCの文字列操作関数を適用したい!
動的に生成したstringオブジェクトが機能しないのはなぜ?
第4章 オブジェクトの中にCの関数を取り込んでみよう
クラス定義では使えない初期化方法ってあるの?
Cのライブラリ関数を使いたい~C++用のライブラリヘッダーを使う
クラスのstatic属性のメンバ関数を呼び出したい~スコープ解決演算子を使う
メンバ変数を初期化できない!~staticなメンバ変数
冗長な関数定義はやめよう!~デフォルト引数その1
クラス型オブジェクトの配列を初期化したい~自動変換
さあたいへんだ!~メモリリーク
第5章 オブジェクト指向のクラスを作ってみよう
大量のアクセスエラーが出るのはなぜ?~classキーワード
奇妙な値が表示されてしまう!~空のデフォルトコンストラクタ
デフォルトコンストラクタが呼び出されないようにしたい
デフォルトコンストラクタがダブってしまった!~デフォルト引数その2
メモリリークに気をつけよう~再割り当て
大きいメンバ関数はクラスの外部に定義しよう
外部定義のメンバ関数をインライン化したい
データメンバの初期化がおかしい!
第6章 オブジェクト指向クラス定義の勘所を押さえよう
オブジェクトを危険にさらすのはやめよう!~メンバ関数のconst宣言
delete演算子が失敗するのはなぜ?~二重解放の問題
データメンバにアクセスできない!~staticなメンバ関数
おかしい!thisポイントが使えない
使えるところでは演算子関数を使おう!~operatorXXX()
同じデータをクラスの複数のオブジェクト間で共有にするには?
コピーコンストラクタを実装しよう~オブジェクトを使った初期化
コピー代入演算子関数を実装しよう~オブジェクトの代入
第7章 クラスの継承とポリモーフィズムをものにしよう
派生クラスのインスタンスを生成できない!
継承した基本クラスのメンバにアクセスできない!~private属性
仮想関数をオーバーライドできない~virtualキーワード
仮想関数をオーバーライドできない~オーバーロード
派生クラスのデストラクタが呼び出されない!~メモリリーク
なぜ抽象クラスが必要なの?~ポリモーフィズム
純粋仮想関数をオーバーライドしたのにインスタンスを生成できない!
多重継承であいまいエラーになってしまう!~スコープ限定
クラスに同じクラスの特性を複数持たせたい~「has-aの関係」
多重継承であいまいエラーになってしまう!~virtual継承
第8章 値渡しと参照渡しを使いこなそう
参照型の仮引数にはconst変数を指定できないの?
参照型の仮引数に指定するオブジェクトの安全を保証したい
const宣言したらメンバ関数がデータを変更できなくなった!
ポインタが指すアドレスだけを固定したい!~constポインタ
const宣言の戻り値でも参照渡しなら変更できるのでは?
変だ、演算子をオーバーロードできない!
オーバーロードしたoperator+()演算子関数がおかしい
オーバーロードした後置形式の演算子関数がおかしい
基本データ型の使える演算子関数を作りたい~非メンバ演算子関数
危険な値渡しってあるの?~ポインタを保持するクラス
第9章 例外とファイル処理を使いこなそう
例外のしくみがよくわからない
目的とする例外を捕捉できない!
new演算子のエラーに対処できない!~NULLポインタとbad_alloc例外
ファイルを読み取るとオブジェクトが正しく表示されない!
ストリーム入出力演算子をオーバーロードできない!
バイナリファイルをコピーできない!~入出力モードを指定する
stringクラスは例外を投入することがあるの?~length_error例外
テキストファイルを行ソートしたい~getline()メンバ関数
第10章 C++標準ライブラリを使ってみよう~テンプレートとSTL
テンプレート関数が正しく機能しないのはなぜ?~関数の型指定
テンプレートクラスが使えないのはなぜ?~クラスの型指定
vectorコンテナの最後の要素を処理できない!~past-the-end
コンテナの要素を簡単に表示したい~関数オブジェクト
listコンテナの反復子が使えないのはなぜ?~反復子の種類と特性
listコンテナの任意の要素の反復子を取得したい~advance()関数
アルゴリズムをうまく使えないのはなぜ?
mapコンテナのインスタンスを生成できない!~よくある話
二項述語を単項述語に変換したい~バインダを使う
付属データはこちら
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||
---|---|---|---|---|---|---|---|---|---|
1刷 | 006 上から2行目 |
2刷 | 未 |
|
2005.07.14 | ||||
1刷 | 016 staticBad.cpp |
2刷 | 未 |
|
2005.07.11 | ||||
1刷 | 018 本文下から2行目 |
2刷 | 未 |
|
2005.07.11 | ||||
1刷 | 018 staticGood.cpp |
2刷 | 未 |
|
2005.07.11 | ||||
1刷 | 138 Timer1Good.cppの下から5行目、4行目 |
2刷 | 未 |
|
2005.07.14 | ||||
1刷 | 388 下から10行目 |
2刷 | 未 |
|
2005.07.14 | ||||
1刷 | 401 下から7行目 |
2刷 | 未 |
|
2005.07.14 | ||||
1刷 | 422 コード部分の下から6行目 |
2刷 | 未 |
|
2005.07.14 | ||||
1刷 | 435 上から7行目 |
2刷 | 未 |
|
2005.07.14 |
てったい北関東 さん
2012-08-01
文法的なものではなく、実際に間違えやすいポイントポイントの解説。文法習ってもどう使えばいいかわかんないよ!なときの二冊目によさそう。ぼくもあまり理解がなかったので、丁寧で結構わかりやすかった。見た目、中のレイアウトも、プログラマたちは嫌いそうな感じではあるが。