关键字: c++ cast
class Base { public: virtual void func1() = 0; virtual void func2() = 0; }; class A { virtual void func3(){}; }; class B : public A, public Base { public: virtual void func1(); virtual void func2(); }; void B::func1() { } void B::func2() { } void DynamicCast() { A* pA = new B(); Base* pBase = dynamic_cast<Base*>(pA);//Work fine pBase->func1(); pBase->func2(); } void StaticCast() { A* pA = new B(); //Base* pBase = static_cast<Base*>(pA);//Compiler error //pBase->func1(); //pBase->func2(); } void ReinterpretCast() { A* pA = new B(); Base* pBase = reinterpret_cast<Base*>(pA); pBase->func1(); pBase->func2();//run-time error: Access violation } int _tmain(int argc, _TCHAR* argv[]) { DynamicCast(); ReinterpretCast(); return 0; }
使用reinterpret_cast的危险,布布扣,bubuko.com
原文:http://www.cnblogs.com/ldlchina/p/3608456.html