スポンサードリンク
HOME > C++言語 > 実行時型識別 - typeid演算子

C++言語 - 実行時型識別 - typeid演算子

ここでは、実行時型識別と言う機能をご紹介します。

非常に難しく感じるかと思いますが、そんなに難しい事をしているワケではありません。

 実行時型識別は、その名の通り、プログラム実行中に変数のデータ型を

知りたい場合やあるポインタ値が何のデータ型ポインタなのかを知りたい場合に使い、

この機能を使って得たデータ型情報を使って動的にプログラムを組む事ができます。

実行時型識別はアルファベット4文字でRTTIと表現される事もあります。

これは ラン タイム タイプ アイデンティフィケーション の略です。
    
Run  Time  Type  Identification



実行時型識別機能にはいくつか種類がありますが、

ここでは、typeid演算子を使った方法を説明します。

typeid演算子は関数のように使い、

引数には、変数名、データ型名、クラス名、インスタンス名等を指定します。

結果として渡した引数に関する型情報が返ります。この型情報を活用するには、

typeid演算子の結果同士を比較する必要があります。

使用例

#include <iostream>
#include <typeinfo>

using namespace std;

class myclass {

};

void main() {

   char cdata1, cdata2, *cp = &cdata1;

   myclass obj;

 // cdata1の型がchar型かどうか比較する
   if (
(typeid(cdata1) == typeid(char)) ) {
      cout << "cdata1はchar型です" << '\n';
   } else {
      cout << "cdata1はchar型ではありません" << '\n';
   }

 // cdata1の型とcdata2の型が同じ型かどうか比較する
   if (
(typeid(cdata1) == typeid(cdata2)) ) {
      cout << "cdata1とcdata2は同じ型です" << '\n';
   } else {
      cout << "cdata1とcdata2は同じ型ではありません" << '\n';
   }

 // *cpの型とcharの型が同じ型かどうか比較する
   if (
(typeid(*cp) == typeid(char)) ) {
      cout << "*cpとcharは同じ型です" << '\n';
   } else {
      cout << "*cpとcharは同じ型ではありません" << '\n';
   }

 // objの型がmyclass型かどうか比較する
   if (
(typeid(obj) == typeid(myclass)) ) {
      cout << "objはmyclass型です" << '\n';
   } else {
      cout << "objはmyclass型ではありません" << '\n';
   }


まずはじめに、typeid演算子を使うには、

#include <typeinfo>と言う記述が必要です。

動作結果は以下のようになります。



ソースダウンロード



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved