多继承小记

#include 

using namespace std;

class A
{
public:
    virtual  void f(){cout<<"A"<void s(){cout<<"A:s"<class B:public A
{
public:
   virtual void f(){cout<<"B"<void s(){cout<<"B:s"<int main()
{
    A *pa = new B();
    pa->s();//说明非虚函数的话,取决于我指针类型,输出A:s
    A *pa2 = (A *)new B();
    pa2->f();//虚函数多态定位到子类的函数,输出B
    B *pb = (B *)new A();
    pb->s();//取决于指针类型,输出B:s
    pb->f();//输出A
    static_cast(pa2)->f();//输出B
    static_cast(pa2)->s();//取决于指针类型,输出B:S
    static_cast(pb)->f();//输出A
    static_cast(pb)->s();//取决于指针类型,输出A:s

    return 0;
}

你可能感兴趣的:(C++)