文章插图
C++中,函数重载描述的是同一个类中不同成员函数之间的关系;函数重写是子类和基类之间不同成员函数之间的关系 。
1、函数重载在相同作用域中存在多个同名的函数,这些函数的参数表不同,编译器根据函数不同的形参表对同名函数的名称做修饰,然后这些同名函数就成了不同的函数 。
特点:
- 函数重载必须在同一个类或同一个命名空间中进行;
- 子类无法重载父类函数,父类同名函数将被覆盖;
- 重载是在编译器期间根据参数类型和个数决定调用哪个函数 。
void Test(int a);void Test(double a);void Test(int a, int b);void Test(double a, int b);
注意:如果仅仅是函数的返回值不同,是没办法重载的 。2、函数重写子类重写从基类继承过来的函数,子类的函数名、返回值、参数列表都必须和基类相同 。
特点:
- 函数重写必须发生在父类与子类之间;
- 父类与子类的函数原型完全一样;
- 使用virtual声明之后能够产生多态(若不写virtual关键字,则称为重定义),多态是在运行期间根据具体对象的类型来决定调用哪个函数 。
#include <IOStream>using namespace std;class base {public:void Display1() {}virtual void Display2() {}};class derived : public base {public:void Display1() {}// 函数重写virtual void Display2() {}// 虚函数实现多态};
【C++的函数重载和函数重写】
推荐阅读
- 喝牛蒡茶的好处和坏处,喝牛蒡茶的其他好处
- 原生AOP的实现以及shior框架授权,图文并茂,收藏学习
- 12个前端开发必备开发的工具
- PHP如何制作自己的Composer包?
- 还在找Navicat的破解版?该了解开源免费的DBeaver
- 一套就能用的短视频脚本模板,谁套谁火
- 历史上的舒妃 皇后和嫔妃地位的差距
- 云锦与丝绸的区别 宋锦和缂丝的区别
- 上班族玩自媒体,一天300,推荐这3个零基础可做的领域
- 籍贯与户籍的区别 户籍是指籍贯吗