【C++】———— 多态
作者主页: 作者主页
本篇博客专栏:C++
创作时间 :2024年7月8日
一、什么是多态
什么是多态呢?通俗的来讲,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生不同的状态。
举个例子:就比如买票这个行为,成人买成人票,学生买学生票,军人优先买票,这就是一个简单的例子。
二、多态的定义和实现
1.多态构成条件
在继承中要形成多态还有两个条件:
- 调用时必须要通过基类的指针或者引用调用虚函数
- 被调用的函数必须是虚函数,且派生类必须含有对基类的虚函数的重写
这里我们插入一个概念,关于重载与重写的概念及区别:
概念:
重载(Overloading)
重载是指在同一个作用域内,函数名字相同,但参数的类型、个数或顺序不同。
重写(Overriding)
重写发生在子类和父类之间。子类中有一个与父类中函数签名(包括函数名、参数类型和个数、返回值类型)完全相同的函数,此时子类中的这个函数就重写了父类中的函数。
重载和重写的区别:
- 范围不同:重载发生在同一个类中,重写发生在子类和父类之间。
- 函数签名要求不同:重载只要求参数不同,重写要求函数签名完全相同(包括参数类型、个数、返回值类型)。
- 权限要求不同:重载对访问权限没有要求,重写要求子类中的重写函数不能比父类中的被重写函数有更严格的访问权限。
- 与虚函数的关系:重载与虚函数无关,重写的函数通常是父类中的虚函数。
下面我们接着来看多态,我们先来看一串多态的代码:
class Person { public: virtual void BuyTicket() { cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。