看代码注释即可
#includeclass A { public: virtual void func() { std::cout << "I'm A" << std::endl; } }; class B :public A { public: virtual void func() { std::cout << "I'm B" << std::endl; } }; void test1() { double a = 10.03; int b = static_cast (a); std::cout << b << std::endl; //int* p = static_cast (a); //error 不能使用static_cast在有类型指针之间进行类型转换 int* p = reinterpret_cast (&a);//类似于c的万能转换 B c; A* d = static_cast(&c);//多态 基类指针指向派生类对象 d->func(); } void test2() { B b; b.func(); A* a = dynamic_cast(&b); a->func(); B* c = dynamic_cast(a); c->func(); } void test3() { int data = 10; const int* cpi = &data; int* pi = const_cast (cpi); const int* cpii = const_cast (pi); } int main() { // test1();//static_cast reinterpert_cast // test2();//dynamic_cast // test3();//const_cast return 0; }



