// 静态类型转换 #include #include #include using namespace std; class A { public: int x; A(int x) : x(x) {} }; class B : public A { public: int y; B(int x, int y) : A(x), y(y) {} }; int main() { A *a = new A(5); B *b = new B(10, 20); A *c = static_cast(b); // 静态上行转换,子类指针向父类指针转换 // cout << "a.x = " << a->x << endl; // cout << "b.x = " << b->x << ", b.y = " << b->y << endl; // cout << "b = " << b << endl; // cout << "c = " << c << endl; // cout << "c.x = " << c->x << endl; // B *b2 = static_cast(a); // 下行转换,父类指针向子类指针转换 // B *b2 = (B *)a; // 强制下行转换,不安全 // cout << "b2.x = " << b2->x << ", b2.y = " << b2->y << endl; delete a; delete b; return 0; }