1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| namespace TestTypeID { namespace ClassDef {
class Parent { virtual ~Parent() = default; virtual std::string Hello() { return "hello from parent"; } virtual void CopyFrom(const Parent *const obj) {} }; class Child { virtual std::string Hello() { return "hello from Child"; } virtual void CopyFrom(const Parent *const obj) {} }; } // namespace ClassDef } // namespace TestTypeID using namespace TestTypeID::ClassDef; inline static void printTypeIdInfo(){ #define PRINT_TYPE(type) \ LOG_WARNING(#type << "\t" << typeid(type).name() << "\t" \ << typeid(type).hash_code()) // PRINT_TYPE(Parent) PRINT_TYPE(Child) // PRINT_TYPE(const Parent) PRINT_TYPE(const Child) // PRINT_TYPE(const Parent &) PRINT_TYPE(const Child &) // PRINT_TYPE(const Parent &&) PRINT_TYPE(const Child &&) // PRINT_TYPE(Parent *) PRINT_TYPE(Child *) // 下面这两组等价 PRINT_TYPE(const Parent *) PRINT_TYPE(const Child *) PRINT_TYPE(Parent const *) PRINT_TYPE(Child const *) // this 指针就是这种类型 PRINT_TYPE(Parent *const) PRINT_TYPE(Child *const) // PRINT_TYPE(const Parent *const) PRINT_TYPE(const Child *const)}
|