28.1 ポリモーフィズムと実行時型情報
省略
28.2 typeid演算子
/* typeid演算子の書式 */
#inclued <typeinfo>
typeid(式または型名) // 基本型情報(type_info)を返す
/* typeid演算子の用法 */
if (typeid(a) == typeid(b))
if (typeid(a) != typeid(b))
if (typeid(a) == typeid(int))
cout << typeid(a).name() << 'n'; // 型名を文字列で返す
if (typeid(a).before(typeid(b))) // aの内部表現順位がbより前なら真
/* beforeで順位判定 */
省略
28.3 C++固有のキャスト演算子
/* 静的バインディングと動的バインディング */
省略
/* static_cast演算子 */
char ch = -1;
int id1, id2;
double dd1 = 123.456, dd2;
id1 = ch; // -1 ← -1
id2 = static_cast<unsigned char>(ch); // 255 ← -1
dd2 = static_cast<int>(dd1); // 123.0 ← 123.456
cout << "id1=" << id1 << " id2=" << id2 << " dd2=" << dd2 << 'n';
型を保証するための実行時チェックは行ないません。
/* dynamic_cast演算子 */
/* const_cast演算子 */
/* reinterpret_cast演算子 */
28.4 RTTIの利用
/* 仮想関数による関数識別例 */
省略
/* typeidによる型識別例 */
/* dynamic_castによる型識別例 */
/* テンプレートでの型識別例 */
省略