C++多态

多态,就是一个事物,通过多种方式呈现,一对多机制
一 、多态存在条件
1-必须存在继承关系
2-必须存在同名虚函数,虚函数覆盖(函数原型相同)
3-必须存在基类指针,调用派生类成员函数

二、虚函数构成多态关键
虚函数关键字:virtual
虚函数是构成多态存在的关键,也是虚函数唯一的作用
1-只需要在基类成员函数前面加上virtual关键字即可
2-构造函数不存在虚函数,不继承,派生类通过调用调用基类构造函数
3-析构函数有虚函数(只需要在基类中定义虚函数,后者不管是否同名,都可以)

三、纯虚函数
在虚函数后声明后面加上=0即可
1-纯虚函数没有实例,不能够进行实例化,因为无函数体
2-派生类可以通过重写基类虚函数,从而实现实例化

实例:

     #include<iostream>
     using namespace std;
    
    class Base//基类
    {
    public:
    virtual void show()//如果声明为virtual void shwo()=0;则为纯虚函数,无函数体,无实例
    {
    cout<<"基类虚函数"<<endl;
    }
    };
    class P:public Base//派生类
    {
    public:
    void show()
    {
    cout<<"派生虚函数"<<endl;
    }
    };
    int main()
    {
    Base *p=new Base;//必须存在的基类指针,虚函数以指向的对象类型来判断调用哪个类
    p->show();
    p=new P;
    p->show();
    }

输出结果:
基类虚函数
派生虚函数

隐藏:子类重写父类的普通函数,调用时,子类调用子类,父类调用父类
覆盖:子类重写父类的虚函数 ,调用时,父类指针/引用都是子类函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值