c++中的重写与重载
明天就是面试了啊啊啊啊啊啊啊啊啊啊,面试题没有几个会的还,日了,好想去实习,想去蚂蚁OceanBase呜呜呜
我要进大厂口牙!
c++中的多态实际上是通过重载(overload)和重写(override)实现的,两者区别其实蛮大的。
在这之前我们先介绍一些我不会的基础知识吧。
首先就是三种访问修饰符,private,public,protected
相对而言protected较为少见
1 | public修饰符用于指定类中的成员可以被类中的成员函数访问,也可以被类外成员访问 |
重载和重写
重载是在同一作用域里面,不同的函数,但具有同样的函数名,依靠不同的参数区分(参数类型,参数个数,以及参数类型不同时的参数顺序)。使得同一个函数可以有多个不同的版本,这属于编译时多态。
规则:
- 不能根据函数的访问权限,返回值类型,抛出的异常进行重载,只能根据参数
- 不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(不一样的参数类型)
重写则是指在派生类中重新实现父类中的虚函数,以提供特定于派生类的实现,强调覆盖。是运行时多态
规则:
- 重写方法的参数列表,返回值,抛出的异常于父类中的方法是一样的
- 被重写的方法不能是private
- 重写方法的访问权限必须大于等于父类中的被重写的方法权限
- 静态方法不能被重写为非静态方法
1 | class Base |
使用多态是为了避免基类中有太多臃肿的重载代码且难以维护
重写与重载的本质就是,重写引入overrided关键字,且有且仅有一个方法
在下一节中我们会继续讲一下重写这个运行时多态的详细内容
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments