class B {
public:
void mf();
};
class D :public B {};
int main()
{
D x;
B *pB = &x;
pB->mf(); //调用B::mf()
D *pD = &x;
pD->mf(); //调用D::mf()
return 0;
}
class A {};class B:public A{};
int main(){A a; //静态类型B b; //静态类型A *p; //动态类型
p = &a; //p指向了ap = &b; //p又指向了breturn 0;}
class A {protected:int a;public:void setA(int num) { a = num; }void cout_getA() { cout << "A" << a << endl; }};
class B :public A {public:void setA(int num) { a = num; }void cout_getA() { cout << "B" << a << endl; }};
int main(){A a;B b;a.setA(10);b.setA(20);
A *p1, *p2;p1 = &a;p2 = &b;
p1->cout_getA();p2->cout_getA();return 0;}
静态绑定
class B {
public:
virtual void mf();
};
class D :public B {
public:
virtual void mf();
};
int main()
{
D x;
B *pB = &x;
pB->mf(); //调用D::mf()
D *pD = &x;
pD->mf(); //调用D::mf()
return 0;
}