新・明解C++で学ぶオブジェクト指向プログラミング | ||||
|
第6章 仮想関数と多相性
*typeid(型).name() で、その型が得られる。
*派生クラスのメンバ関数は、ベースクラスのメンバ関数を隠す。
*隠蔽されるベースクラスのメンバ関数を、明示的に指定することも可能。
mineya.Member::print();
*ベースクラスへのポインタ/参照が、派生クラス型オブジェクトを指す/参照できる、が、制約はある。
*仮想関数
virtual void print() const;
-> 派生クラスのメンバ関数が使われる。
=コンパイル時ではなく、実行時に動的に決定される。
*多相性=ポリモーフィズム
*仮想関数を1個でも有するクラスは、多相的クラスと呼ばれ、そうでないクラスとは異なる性格をもつ。
*OOPの三大要素
・クラス
・継承
・多相性
*ベースクラスのデストラクタは、仮想デストラクタとして定義しておく。
*typeid 演算子は、多相的クラスで本領発揮する。
const Member* ptr, const Member& ref typeid(*ptr).name() typeid(ref).name()