类型识别
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; }
【Oracle】PL/SQL中对空字符串的判断
【读书笔记】沉默的大多数
【Oracle】包及包的调用
Android (争取做到)最全的底部导航栏实现方法 ZZ
一个屌丝程序猿的人生(一百一十七)
一个屌丝程序猿的人生(一百一十六)
一个屌丝程序猿的人生(一百一十五)
DIV_ROUND_UP(x,y)实现x/y向上取整
SMI(MDC/MDIO)总线接口介绍