c++<笔记> 重载 重写 重定义 覆盖 隐藏
一、重载 (overload)
<1> 相同作用域内,
<2>函数名称相同
<3>函数参数列表不同
<4>virtual 可有可无
void fun1(int x, int y );
void fun2 (float a,v b,float c);
函数名相同,参数列表相同,不是函数重载
二、重写==覆盖 (override)
在派生行为中,子类对父类函数的操作,C++ 多态表现:
<1>父类函数virtual 标记,且不能为static
<2> 子类重写的父类函数 ,函数返回值相同、函数名相同、函数参数列表相同(个数、类型)
<3> 访问权限修饰符(private 、protected 、public)可以不同
<4> 子类重写父类的函数可以被 override 修饰
被virtual修饰的成员函数,无论他们是private/protect/public的,都会被统一放置到虚函数表中。对父类进行派生时,子类会继承到拥有相同偏移地址的虚函数标(相同偏移地址指的是各虚函数先后与VPTR指针的偏移),因此就允许子类对这些虚函数进行重写
三、重定义==隐藏 (redifine)
在派生行为中,子类对父类函数的操作:
<1>函数名必须相同,参数列表可以不同、可以相同
总结
参考:
https://blog.csdn.net/zhejfl/article/details/90199200
https://blog.csdn.net/little_qi/article/details/78608437
https://www.cnblogs.com/zhangjxblog/p/8723291.html
https://www.e-learn.cn/topic/3788016
https://www.cnblogs.com/luxiaoxun/archive/2012/08/09/2630751.html