类型识别
C++中如何得到动态类型?
#include <iostream> #include <string> using namespace std; class Base { public: virtual string type() { return "Base"; } }; class Derived : public Base { public: string type() { return "Derived"; } void printf() { cout << "I'm a Derived." << endl; } }; class Child : public Base { public: string type() { return "Child"; } }; void test(Base* b) { /* 危险的转换方式 */ // Derived* d = static_cast<Derived*>(b); if( b->type() == "Derived" ) { Derived* d = static_cast<Derived*>(b); d->printf(); } // cout << dynamic_cast<Derived*>(b) << endl; } int main(int argc, char *argv[]) { Base b; Derived d; Child c; test(&b); test(&d); test(&c); return 0; }
#include <iostream> #include <string> #include <typeinfo> using namespace std; class Base { public: virtual ~Base() { } }; class Derived : public Base { public: void printf() { cout << "I'm a Derived." << endl; } }; void test(Base* b) { const type_info& tb = typeid(*b); cout << tb.name() << endl; } int main(int argc, char *argv[]) { int i = 0; const type_info& tiv = typeid(i); const type_info& tii = typeid(int); cout << (tiv == tii) << endl; Base b; Derived d; test(&b); test(&d); return 0; }
【山外笔记-计算机网络·第7版】第01章:计算机网络概述
【山外笔记-计算机网络·第7版】第13章:计算机网络名词缩写汇总
【山外笔记-计算机网络·第7版】第10章:计算机网络重要概念
【山外笔记-工具框架】Netperf网络性能测试工具详解教程
【山外笔记-工具框架】iperf3网络性能测试工具详解教程
【山外笔记-黑客基础】Windows PowerShell 脚本学习(上)
【山外笔记-Linux 命令】cp 命令详解
【山外笔记-Linux 命令】scp 命令详解
PCF8591采集温度源码程序---STC89C52实时用PCF8591采集温度LCD显示