クラスの階層があり、基本クラスにはクラス名を出力する機能があります。
#include <iostream>
using namespace std;
class base
{
public:
virtual void print_name() { cout << typeid(*this).name() << endl; };
};
class derived1 : public base { };
class derived2 : public base { };
int main ()
{
base Base;
Base.print_name();
derived1 Derived1;
Derived1.print_name();
derived2 Derived2;
Derived2.print_name();
}
上記の出力は
class base
class derived1
class derived2
実際、これはプラットフォームに依存します。
各クラスに一意の名前を「付ける」多かれ少なかれ標準的な方法があるのでprintname()
、すべてのプラットフォームで出力を同じにするために使用できます(実際のクラス名に加えられた変更とは無関係です)?