組込み現場の「C++」プログラミング 明日から使える徹底入門
2009年3月21日紙版発売
高木信尚 著
A5判/320ページ
定価3,058円(本体2,780円+税10%)
ISBN 978-4-7741-3802-2
ただいま弊社在庫はございません。
書籍の概要
この本の概要
組込み開発におけるプログラムは,年々その規模が拡大しています。プログラムの行数も,最近3年の間に,10万行を超えるものの割合が全体の3割から6割以上へと倍増しています。そのため,C言語に加えて,最近ではC++もよく使われるようになっています。大規模開発ではオブジェクト指向的な手法が必要である上,組込みにおいてはC++しか選択肢がないということもあるでしょう。本書は,C++を使わざるを得なくなっている組込み現場のプログラマーに,このジャンルに特化した知識をも同時に提供しようとするものです。
こんな方におすすめ
- 組込み開発に従事しているプログラマー
- C言語は知っているがC++は自信がないという方
- 組込みならではのC++のテクニックを勉強したい方
目次
第1章 明日からでも使えるC++
1.1 C++というのはこんな言語
- 1.1.1 Cのスーパーセット言語としてのC++
- 1.1.2 オブジェクト指向プログラミング言語としてのC++
- 1.1.3 ジェネリックプログラミング言語としてのC++
- 1.1.4 C++はどんなプログラミング手法も強制しない
1.2 組込み開発でC++を使う
- 1.2.1 C++を使う場合のメリットとデメリット
- 1.2.2 C++の静的なエラー検出機能
- 1.2.3 C++を使えない状況
1.3 「ベターC」としてのC++はこんなに便利
- 1.3.1 Cとまったく同じコードをC++で書く
- 1.3.2 些細な拡張と相違点
- 1.3.3 「const修飾子」はかなり異なる
- 1.3.4 ポインタではない,文字どおりの「参照型」
- 1.3.5 名前の衝突を防ぐ「名前空間」
- 1.3.6 同じ意味の関数には同じ名前を――多重定義と関数テンプレート
- 1.3.7 例外処理
- 1.3.8 意味が明確なキャスト演算子
1.4 Cの資産を活用しよう
- 1.4.1 Cの資産を利用するためのテクニック
- 1.4.2 C++の関数をCから呼び出すには?
1.5 アセンブリ言語とのインターフェース
- 1.5.1 asm宣言
- 1.5.2 アセンブリ言語で記述したプログラムとのリンク
- 1.5.3 スタートアップの記述
1.6 ハードウェアの制御と割り込みハンドラ
- 1.6.1 整数値をポインタ型にキャストした場合の振る舞いは処理系に依存する
- 1.6.2 ビットフィールドは要注意
- 1.6.3 割り込みハンドラはC互換関数を用いる
第2章 クラスを使いこなそう
2.1 オブジェクト指向プログラミングの概要
- 2.1.1 オブジェクト指向分析/オブジェクト指向設計/オブジェクト指向プログラミング
- 2.1.2 構造化プログラミングと構造化プログラミング言語
- 2.1.3 オブジェクト指向プログラミングの概要
2.2 クラスの基礎
- 2.2.1 コンストラクタとデストラクタ
- 2.2.2 データメンバーの初期化
- 2.2.3 メンバー関数
- 2.2.4 アクセス制御
- 2.2.5 構造体からクラスへ
- 2.2.6 new演算子とdelete演算子
- 2.2.7 静的メンバー関数
- 2.2.8 静的データメンバー
- 2.2.9 演算子の多重定義
- 2.2.10 コピーコンストラクタとコピー代入演算子
- 2.2.11 クラスの中で宣言/定義できるもの
- 2.2.12 クラステンプレート
2.3 継承と仮想関数
- 2.3.1 クラスの継承
- 2.3.2 基底クラスのアクセス制御
- 2.3.3 多重継承と仮想継承
- 2.3.4 基底クラスの初期化
- 2.3.5 仮想関数
- 2.3.6 純粋仮想関数
- 2.3.7 実行時型識別(RTTI)
2.4 動的な多相性と静的な多相性
- 2.4.1 仮想関数と多相オブジェクト
- 2.4.2 テンプレートによる静的な多相性
- 2.4.3 テンプレートを使った排他制御
- 2.4.4 ファンクタを用いたスマートなコールバック
2.5 堅牢なクラス設計
- 2.5.1 クラスのメンバーは可能な限り非公開にしよう
- 2.5.2 継承されるクラスのデストラクタは,仮想関数にするか限定公開にしよう
- 2.5.3 new演算子をカスタマイズしよう
- 2.5.4 オブジェクトをコピーすべきでないクラスは,コピーを禁止しよう
- 2.5.5 継承ではなく,データメンバーにできないか検討しよう
- 2.5.6 メンバー関数ではなく,非メンバー,非随伴関数にできないか検討しよう
- 2.5.7 暗黙の型変換をなるべく回避しよう
- 2.5.8 クラスが内部で管理するハンドルを公開しないようにしよう
- 2.5.9 例外安全なコードを書こう
2.6 イディオムとデザインパターン
- 2.6.1 Pimplイディオム
- 2.6.2 RAIIイディオム
- 2.6.3 NVIイディオム
- 2.6.4 Iteratorパターン
- 2.6.5 Singletonパターン
第3章 C++プログラムの裏側
3.1 多重定義の裏側
- 3.1.1 マングル処理
- 3.1.2 多重定義の解決
3.2 クラスの裏側
- 3.2.1 クラスのメモリ配置
- 3.2.2 メンバー関数
- 3.2.3 アクセス指定子の影響
3.3 継承の裏側
- 3.3.1 継承を行った場合のメモリ配置
- 3.3.2 継承関係にあるクラスへのポインタを型変換したとき
3.4 仮想関数の裏側
- 3.4.1 仮想関数テーブル
3.5 初期化と終了処理
- 3.5.1 静的初期化と動的初期化
- 3.5.2 局所的な静的記憶域期間を持つオブジェクトの初期化
- 3.5.3 終了処理
3.6 new演算子とdelete演算子の裏側
- 3.6.1 new演算子とdelete演算子の振る舞い
- 3.6.2 operator new関数(割り付け関数)
- 3.6.3 operator delete関数(解放関数)
3.7 例外処理の裏側
- 3.7.1 例外処理の振る舞い
- 3.7.2 setjmpマクロとlongjmp関数を使った例外処理の擬似コード
- 3.7.3 途中のデストラクタを呼び出す擬似コード
3.8 例外指定の振る舞い
3.9 テンプレートの裏側
- 3.9.1 テンプレートの具現化
- 3.9.2 テンプレートは静的に解決される
- 3.9.3 テンプレートによるプログラムサイズの肥大化
3.10 オーバーヘッドはここから始まる
- 3.10.1 Cとまったく同じ記述をした場合のオーバーヘッド
- 3.10.2 デストラクタを持つ自動オブジェクト
- 3.10.3 オブジェクトの構築と解体
- 3.10.4 一時オブジェクト
第4章 C++プログラムの移植性
4.1 まず,C++の歴史を振り返ろう
4.2 Embedded C++と標準C++
- 4.2.1 Embedded C++の概要
- 4.2.2 Embedded C++を使ううえでの注意点
4.3 標準ライブラリはどこまでサポートされるか?
- 4.3.1 フリースタンディング環境
- 4.3.2 ホスト環境
4.4 組込み開発では例外処理を使用すべきか?
- 4.4.1 例外処理を使用しないとは?
- 4.4.2 例外処理を使用できない,または使用したくない状況
4.5 現実の処理系の標準準拠度
- 4.5.1 テンプレートに関する問題点
- 4.5.2 名前空間に関する問題点
- 4.5.3 例外処理に関する問題点
4.6 Cと共通の注意点
- 4.6.1 バイトオーダーとビットオーダー
- 4.6.2 境界調整
- 4.6.3 int型のサイズ
- 4.6.4 ヘッダ名
第5章 C++実用テクニック
5.1 ベターCのためのコーディング規約
- 5.1.1 明示的なデストラクタは定義しない
- 5.1.2 仮想関数は使用しない
- 5.1.3 仮引数を1つ受け取るコンストラクタには,必ずexplicit指定子を付ける
- 5.1.4 例外処理は使用しない
5.2 行間を読もう
- 5.2.1 行間や字句間で何が起きるのか?
5.3 例外安全に気を配ろう
- 5.3.1 例外に対する安全性とは?
- 5.3.2 3つの例外安全保障
- 5.3.3 失敗しない保障が必要な関数
5.4 サイズ効率を改善するには?
- 5.4.1 例外指定を活用する
- 5.4.2 例外を送出しない関数をインライン関数にする
- 5.4.3 必要のないデストラクタは定義しない
- 5.4.4 多くの仮想関数を持つクラスは作らない
- 5.4.5 継承の階層は浅くする
- 5.4.6 テンプレートを有効活用する
5.5 マルチタスク環境でのC++
- 5.5.1 局所的な静的オブジェクトの初期化
- 5.5.2 例外処理
- 5.5.3 new演算子とdelete演算子
- 5.5.4 volatile修飾子を活用する
この本に関連する書籍
-
C/C++プログラミングの「迷信」と「誤解」
C/C++プログラマーは大勢います。しかし,その多くは学校などでの基礎教育を経たら,もうすぐに実作業を通して言語の習得をしています。実は,そこに大きな落とし穴があ...
-
プログラマーのための ソースコードを読む技術
ひと通り言語を勉強し,実務に就くと,プログラムを書いたりデバッグをしたりするために,ソースコードを読む必要が生じます。だいたいは知識や技術の習得,既存のソフ...
-
組込み現場の「C」言語 基礎からわかる徹底入門 《重点学習+文法編》
組込みプログラマーはニーズも従事者も増加しているという現実があります。C++の利用も増えてきたとは言え,現状,相変わらず主流はC言語です。組込みプログラマーの経...
-
標準テキスト 組込みプログラミング 《ハードウェア基礎》
組込みエンジニアの人材不足が問題となっています(2007年の時点でも、9万人以上ものエンジニアが不足とされていました)。こういった人材の育成は急務となっており、企...
-
組込み現場の「C」プログラミング 標準コーディングガイドライン
最近の現場にはコードの書き方をきちんと教わっていない人が増加しているとの話が聞かれます。「教える側」が多忙を極めていることにも原因がありますが,結果的に成果...
-
組込み現場の「C」プログラミング 基礎からわかる徹底入門
組込み開発が,日本メーカーが世界で生き残るための切り札ともなっていることは周知の事実です。ケータイをはじめとする家電のデジタル化や高機能化,またモデルチェン...