协议按名字分文件打印-c++ typeid RTTI运行时识别
来源:互联网 发布:node cms 政府 编辑:程序博客网 时间:2024/04/28 20:49
可以根据基类的指针,打印出运行时实际所指向子类的名字。
关于 Demangling 参考
http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html
#include <cxxabi.h>#include <iostream>using namespace std;class CProtoNameBase{ public: virtual void Print(){cout<<"Base"<<endl;};}; class CProtoNameA:public CProtoNameBase{ void Print() { cout<<"NameA"<<endl;};}; class CProtoNameB:public CProtoNameBase{ void Print(){cout<<"NameB"<<endl;}}; void print_proto_name( CProtoNameBase *proto){ const std::type_info &ti = typeid( *proto); int status = 0; char *szProtoName = abi::__cxa_demangle( ti.name(),0,0,&status); cout<<"ti.name:"<<ti.name()<<" after demangle:"<< szProtoName<<endl; free(szProtoName);} void rtti_test(){ CProtoNameBase *proto1 = new CProtoNameA(); CProtoNameBase *proto2 = new CProtoNameB(); print_proto_name( proto1); print_proto_name( proto2);}int main(){ rtti_test(); return 0;}
ti.name:11CProtoNameA after demangle:CProtoNameA
ti.name:11CProtoNameB after demangle:CProtoNameB
0 0
- 协议按名字分文件打印-c++ typeid RTTI运行时识别
- C++ 运行时类型识别RTTI typeid<->dynamic_cast
- RTTI运行时类型识别typeid,type_info,dynamic_cast关建字
- C++学习之多态篇(运行时类型识别--RTTI(typeid和dynamic_cast))
- 运行时类型识别(RTTI)
- RTTI 运行时类型识别
- 运行时类型识别(RTTI)
- 运行时类型识别RTTI
- RTTI 运行时类型识别
- RTTI运行时对象识别
- RTTI 运行时类型识别
- RTTI 运行时类型识别
- RTTI 运行时类型识别
- RTTI运行时类型识别
- 运行时类型识别(RTTI)
- RTTI 运行时类型识别
- RTTI-运行时类型识别
- RTTI运行时类型识别
- 现代软件工程 10 绩效管理
- 软件工程–Alpha Release and team testing
- 软件工程 - 团队博客第二阶段成绩
- 线程的分离状态
- 软件工程 beta 阶段计划
- 协议按名字分文件打印-c++ typeid RTTI运行时识别
- 软件工程 - 个人的 beta 计划
- 现代软件工程讲义 0 课程概述
- AAM(Active Appearance Model)算法 理论+实践
- 初识springMVC
- 软件工程 Beta 阶段 团队贡献分数
- 现代软件工程讲义 1 软件工程概论
- 软件工程 项目管理的目标和细节
- 现代软件工程 - 期末评比及作业要求