类型识别
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; }
Chap1:全景图[Computer Science Illuminated]
[IDE] ECLIPSE取消自动更新
[Unit Test] Unit Test Brief Introduction
[ English ] 俚语 “Ping me=打我电话”
Some Useful Resources for the Future Usage
python错误记录
django-用户认证模型
Djiango-富文本编辑器
Djiango-建立模型抽象基类