- #include<iostream>
- using namespace std;
- /*
- 总结多态性几个要点:
- 1、一定要有虚函数,非虚函数不能实现多态
- 2、子类一定要改写父类的虚函数,不改写不能实现多态
- 3、必须用父类指针指向子类对象来调用虚函数,直接用子类指针
- 来调用不是多态性,而只是普通调用
- 4、有一个纯虚函数的类就叫抽象类
- 5、虚函数里面可以写代码,且需要声明
- */
- class Shape
- {
- public:
- void draw()
- {
- cout<<"Shape draw()"<<endl;
- }
- //virtual void draw()=0; //有纯虚函数的类是抽象类
- virtual void a() //一定要有虚函数
- {
- cout<<"Shape a()"<<endl;
- }
- };
- class ReTangle : public Shape
- {
- public:
- void draw()
- {
- cout<<"ReTangle draw()"<<endl;
- }
- void a()
- {
- cout<<"ReTangle a()"<<endl;
- };
- };
- void main()
- {
- //必须用父类指针指向子类对象来调用虚函数
- Shape *rt =new ReTangle();
- rt->draw();
- Shape *p =new ReTangle();
- p->a();
- }