<c++>多态

什么是多态?

在了解多态的概念之前我们首先要知道什么是虚函数。

虚函数就是类的成员函数前面加关键字virtual,则这个成员函数叫做虚函数。这与虚继承中的virtual一点关系都没有!只是都用了virtual罢了。

虚函数的重写(覆盖):当在子类的定义了一个与父类完全相同 的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个虚函数。

完全相同指的是函数名相同,参数相同,返回值相同(协变除外),但是访问修饰符可以不相同。

那么说到这里,我们顺便来区分一下重载,重定义,重写的区别:

重载:在同一作用域内,函数名相同,参数个数/类型不同,返回类型可同可不同。

重定义(隐藏):只要子类与父类同名即可构成重定义。

以上就是关于虚函数索要了解的,那么什么是多态呢?

多态必须要满足的两个条件:
(1)子类必须是虚函数的重写
(2)调用的时候必须是父类的指针或引用。

下面我们通过例子来看看多态的具体实现

#include <iostream>
using namespace std;

class Person
  {
  public:
      virtual void buyticket()
  {
          cout<<"全价票"<<endl;
      }
  };
class Student:public Person
  {
  public:
      virtual void buyticket()//重写了虚函数
      {
          cout<<"半价票"<<endl;
      }

  };
 void fun(Person& p)
  {
      p.buyticket();
  }

int main()
 {
    Person p;
    Student s;

    fun(p);   //调用全价票的buyticket()函数
    fun(s);   //调用半价票的buyticket()函数
    system("pause");
   return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值