C++でデータ型typeidを取得
1152 ワード
ある目的を達成するために、クラスタイプを含む組み込みタイプでもカスタムタイプでもデータ型を取得する必要がある場合があります.typeidの謎のベールを解く前に、まず、RTTI(Run-Time Type Identification)について説明します.これにより、基本ポインタまたは参照によって指向されるオブジェクトの実際の派生タイプを取得できます.すなわち、「基本クラスを指すポインタまたは参照でオブジェクトを操作する」プログラムが「これらのポインタまたは参照によって指向されるオブジェクト」を取得できるようになります.に表示されます.C++では、RTTIをサポートするために2つのオペレータが用意されています:dynamic_castとtypeid.
dynamic_castは、実行時にタイプ変換を行うことを可能にし、プログラムがクラス階層内でタイプを安全に変換できるようにし、それに対応するもう一つの非安全な変換オペレータstatic_cast.typeidはC++のキーワードの1つで、sizeofのようなオペレータに等しい.typeidオペレータの戻り結果はtype_という名前ですinfoの標準ライブラリタイプのオブジェクトの参照.
関連コードは次のとおりです.
dynamic_castは、実行時にタイプ変換を行うことを可能にし、プログラムがクラス階層内でタイプを安全に変換できるようにし、それに対応するもう一つの非安全な変換オペレータstatic_cast.typeidはC++のキーワードの1つで、sizeofのようなオペレータに等しい.typeidオペレータの戻り結果はtype_という名前ですinfoの標準ライブラリタイプのオブジェクトの参照.
関連コードは次のとおりです.
#include "stdafx.h"
#include
using namespace std;
//
template
T myadd(T a, T b)
{
cout << typeid(T).name() << " ";
return a+b;
}
// (C++ struct class , )
struct Node{
Node(){};
int number;
Node* point;
~Node(){};
};
int _tmain(int argc, _TCHAR* argv[])
{
//
int test1=0;
float test2=0.2;
char test3='s';
int * pInt=NULL;//
cout <