実行型識別(RTTI)
「typeid演算子」を使って操作したいオブジェクトのクラスを調べることができます。
このように実行するたがを判定する機能として「実行型識別(RTTI)」があります。
このサンプルでは引数がないケースと引数を使ったケースを紹介します。
実行型識別では仮想関数を使います。
仮想関数の使用例は次のようになります。
virtual 型 メソッド名 = 0;
(例)
virtual String^ calcResult()=0;
また派生クラスでは親クラスのコンストラクタを継承します。
コンストラクタの記述例
引数がないケース
派生クラス名() : 親クラス名(){};
引数があるケース
派生クラス名(変数1, …, 変数n) : 親クラス名(変数1, …, 変数n){...};
このサンプルでは次のように
派生クラスのメソッドを実装しています。
親クラスのオブジェクトを宣言します。
clsRTTI *cls1;
派生クラスのオブジェクトを宣言します。
clsRTTI_child1 cls1_1;
派生クラスのオブジェクトのポインタを格納します。
cls1 = &cls1_1;
「typeid」を使ってクラスの判定をしています。
if (typeid(*cls1) == typeid(clsRTTI_child1))
コンストラクタに引数を指定した例が次のようになります。
clsRTTI2 *cls2;
clsRTTI2_child1 cls2_1(8, 2);
clsRTTI2_child2 cls2_2(8, 2);
|
|