#include <iostream>
using namespace std;
class A
{
public:
virtual void f(){cout<<"A"<<endl;}
void s(){cout<<"A:s"<<endl;}
};
class B:public A
{
public:
virtual void f(){cout<<"B"<<endl;}
void s(){cout<<"B:s"<<endl;}
};
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<B*>(pa2)->f();//输出B
static_cast<B*>(pa2)->s();//取决于指针类型,输出B:S
static_cast<A*>(pb)->f();//输出A
static_cast<A*>(pb)->s();//取决于指针类型,输出A:s
return 0;
}
多继承小记
最新推荐文章于 2021-12-27 16:57:44 发布