Commits

Takayuki KONDO  committed 979a350

cpp: typeid サンプルコード追加

  • Participants
  • Parent commits 754654d

Comments (0)

Files changed (1)

File cpp/type_info.cpp

+// coding: utf-8
+#include <iostream>
+#include <typeinfo>
+
+class CBase
+{
+public:
+	virtual ~CBase(){}  // スーパークラスは仮想デストラクタを宣言しておく
+};
+
+class CSub1 : public CBase
+{
+};
+
+class CSub2 : public CBase
+{
+};
+
+int main()
+{
+	CBase base_obj;
+	CSub1 sub1_obj;
+	CSub2 sub2_obj;
+
+	CBase *pb = &base_obj;
+	CBase *p1 = &sub1_obj;
+	CBase *p2 = &sub2_obj;
+
+	// pointerの実行時型情報
+	std::cout << typeid( pb ).name() << std::endl;
+	std::cout << typeid( p1 ).name() << std::endl;
+	std::cout << typeid( p2 ).name() << std::endl;
+
+	// オブジェクトの実行時型情報
+	std::cout << typeid( *pb ).name() << std::endl;
+	std::cout << typeid( *p1 ).name() << std::endl;
+	std::cout << typeid( *p2 ).name() << std::endl;
+
+	return 0;
+}