/************************************************************************/ /* 文件名: 转类形 创建人: Clark/陈泽丹 描述: static_cast转换不安全但高效,dynamic_cast转换安全不高效 */ /************************************************************************/ #include <iostream> using namespace std; class FatherClass{ virtual void fun(){} }; class ChildClass:public FatherClass{}; template<class To, class From> struct TransType { static To& Case(From& obj) { cout<<"高速转换"<<endl; return static_cast<To&>(obj); } }; template<> struct TransType<ChildClass, FatherClass> { static ChildClass& Case(FatherClass& obj) { cout<<"安全转换"<<endl; return dynamic_cast<ChildClass&>(obj); } }; void main() { ChildClass c; FatherClass* p = &TransType<FatherClass, ChildClass>::Case(c); ChildClass* q = &TransType<ChildClass,FatherClass>::Case(*p); system("pause"); }