[rakuten:book:10741013:detail]

第15章 クラス階層

クラスや、派生クラスの扱い方はわかりやすいものがおおい。
筆者が、投げてくるソースコードが、なんとなく読めるものが多い。
和モノのC++の入門書って、ちゃんと、ソースコードの1こ1こが、独立して、コンパイルされて、
走るようになっているけど、この人の本のソースコードはそうではない。
限りなく、感覚的に記述して、
「あとは、想像しろ」みたいな部分があるので。(違いますか?)

本章では、派生クラスと仮想関数が、アクセス制御、名前の照合、自由記憶領域管理、コンストラクタ、ポインタ、型変換などのC++言語の他の機能とどのような関係を持つかについて述べる。

結構、実践的な内容なのではないかと思います。
だって、実際のコーディングで、クラスを使うとなったら、その機能単独で何かをやるということは考えられない。
複合的な思考が、一番実践的。

第12章で、使用されたクラスを使ったシステム設計の雛形がここでも多様されます。
余力のある人は、12章のモデルをしっかり読み込んだ上で、こちらの15章に挑戦するといいと思います。

抽象化は選択的な無知である。  Andrew Koenig

Andrew Koenig is a former AT&T researcher and programmer known for his work with C++. He is the author of C Traps and Pitfalls, co-author (with Barbara Moo) of Accelerated C++ & Ruminations on C++, and his name is associated with Argument dependent name lookup, also known as “Koenig lookup”.


Accelerated C++: Practical Programming by Example | InformIT
[rakuten:book:11101502:detail]

第15章の目次

15−1 イントロダクションと概要

15−2 多重継承
 15−2−1 曖昧さの解決
 15−2−2 継承とユーザー宣言
 15−2−3 基底クラスの重複
 15−2−4 仮想基底クラス
 15−2−5 多重継承の使い方

15−3 アクセス制御
 15−3−1 限定公開メンバー
 15−3−2 基底クラスへのアクセス

15−4 実行時型情報→全体的にわかりにくい記述が多かった。
 15−4−1 dynamic_cast
 15−4−2 クラス階層内での移動
 15−4−3 クラスオブジェクトの構築と解体
 15−4−4 typeidと拡張型情報
 15−4−5 RTTIの使い方、誤った使い方

15−5 メンバポインタ
 15−5−1 基底クラスと派生クラス
 

15−6 自由記憶領域
 15−6−1 配列の確保→平山本によく登場していた。
 15−6−2 ”仮想コンストラクタ

15−7 アドバイス

15−8 練習問題

気になった練習問題

ボードゲームのRiversi/Othelloを書きなさい。人間とコンピュータの両方がプレイヤになれるようにしなさい。まずプログラムを正しく動かすことに集中し、次に
コンピュータのプレイやが相手として不足がない”頭”を持つようにしなさい。

ゲームのユーザインターフェースを改良しなさい。

解答がない上に、とてつもなく、大雑把な問題になっている。
下記はC++を使ったオセロゲームの作り方について掲載されています。

Visual C++ を使ってオセロを作ってみよう