class Base { // 基类
public:Base(int aa=88) : a(aa) {}void f() { // 非virtualcout<<"Base"<<endl;}int a;
};
class Derived : public Base { // 派生类
public:Derived(int ba= 77, int bb = 66) : a(ba), b(bb) {}void f() { // 非多态cout<<"Derived"<<endl;}int a;int b;
};int main(){Base* p = new Derived();p->f(); // Base(*p).f(); // Basestatic_cast<Derived*>(p)->f(); // Derivedcout<<p->a<<endl; // 88 基类cout<<static_cast<Derived*>(p)->a<<endl; // 77cout<<static_cast<Derived*>(p)->b<<endl; // 66delete p;return 0;
}
备注:非多态情况下,基类的指针可以指向派生类的对象,但是调用方法时,使用的是它本身类型的方法,因为他不符合多态的定义。