C++ のからくり
C++ for Dummies 2nd Editon
書誌
| tag | C++ |
| text | 唯野 |
| author | スティーブン・R・デイビス |
| editor | 瀬谷啓介(訳) |
| publisher | ソフトバンク |
| year | 1998 |
| price | 3,600+tax |
| isbn | 7973-0573-8 |
履歴
| 1999.summer | 読了 |
| 2000.3.27 | 公開 |
| 2002.11.28 | 修正 |
感想
C++ の入門書というと一般にはどうしても C の延長線上という切り口を持つものが多い。もちろん、それは C++ にとっては最大の長所(C の資産を流用しやすい)であり、かつ最大の短所(中途半端なオブジェクト指向 ?)でもあるのだが、それだけに本書はそういった通俗的ではない切り口を持つだけでも注目できる本だと思う。実際、本書は既に新版が邦訳されており人気もあるようだ。
具体的にいうと、C++ の文法や機能としてどういうもののあるのかは分かったが、それを C++ として、もっといえばオブジェクト指向的な文脈として使うとはどういうことなのか――という点で疑問を持つ人に勧められる内容になっている。本書が謳う売り文句ではないが「なぜそういう機能があるのか」という視点に立った説明は無味乾燥な機能の羅列よりもはるかに理解しやすい。また、C の経験者を意識した同一プログラムを C から C++ へと書き換えていく章末の例題は C と C++ による実装の違いを何よりも分かりやすい方法で示すことに成功していると思う。そういう意味でも C++ の完全な入門書にはなりえないが、2 冊目・3 冊目に読む本としては非常によい本だと思う。
抄録
10-11
long double 型は 80 ビット長で Intel 製 CPU の FPU (浮動小数点数演算ユニット)が持つ内部レジスタの長さに対応している。初期の FPU は 80x87 という名称で CPU とは独立していたが、486DX から FPU が組み込まれるようになった。モトローラ製 CPU でも同じく 80 ビット長である 68881 という名の FPU を持っている。
12
ファイル内で static な変数を extern することはできない。
グローバル変数はデータセグメントと呼ばれる領域に常駐する。
15/74-75
C では引数を何も指定しなかった場合、引数の個数や数をチェックしない。つまり、あらゆる型や個数が許されるという意味で、これは「...」と明示することができる。具体的には可変個数引数である関数(printf など)で利用されている。(ちなみに戻り値を略すと int になる。)一方、C++ で引数のない場合には、引数が void だと判断される。
つまり、C と C++ では関数の引数を略した場合の解釈が異なるので、C++ プログラムにおいて extern "C" した同名の関数は別関数となる。(唯野)
16
C での代入は演算にすぎない。なぜなら代入演算子は、右辺の値を結果的に左辺の型と値へ演算しているともいえるから。
20/23
C での && や || は「省略型評価」なので、偽となった時点で、それ以降の評価は行われない。ゆえに、例えば if(g() && f()) で g() の戻り値が 0 であった場合の f() は呼び出されない。また、z = f() * g() というときの f() と g() の呼び出し順序はコンパイラに依存する。こういうケースでの () は優先順位的に意味を持たないので、確実に順序を定めるのであれば 2 文に分ける必要がある。
全文を読まれる場合はログインしてください
