看看覆盖的说法对不对?

方紫涵 2014-02-11 08:41:18
网上搜到一个面试题,看看下面的红色部分说的对不对啊 ?
and问下 覆盖和隐藏是不是一个意思啊 ?



(1)重写和重载主要有以下几点不同。
 范围的区别:被重写的和重写的函数在两个类中,而重载和被重载的函数在同一个类中。
 参数的区别:被重写函数和重写函数的参数列表一定相同,而被重载函数和重载函数的参数列表一定不同。
 virtual的区别:重写的基类中被重写的函数必须要有virtual修饰,而重载函数和被重载函数可以被

virtual修饰,也可以没有。
(2)隐藏和重写、重载有以下几点不同。
 与重载的范围不同:和重写一样,隐藏函数和被隐藏函数不在同一个类中。
 参数的区别:隐藏函数和被隐藏的函数的参数列表可以相同,也可不同,但是函数名肯定要相同。当参数不相同时,无论基类中的参数是否被virtual修饰,基类的函数都是被隐藏,而不是被重写。
说明:虽然重载和覆盖都是实现多态的基础,但是两者实现的技术完全不相同,达到的目的也是完全不同的,覆盖是动态态绑定的多态,而重载是静态绑定的多态。
...全文
250 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 版主 2014-02-12
  • 打赏
  • 举报
回复
引用 9 楼 xwhbwas2008 的回复:
[quote=引用 8 楼 lianshaohua 的回复:] 一般来说是这样的: override是重写或叫覆盖; overload是重载 声明一个所派生类一样的非虚函数(派生类本身不是虚的)是隐藏,在当前类中调用时默认调用本类的,当然也有办法调用基类的同型构函数;
overwrite 有没有这个词?[/quote] 没有
方紫涵 2014-02-12
  • 打赏
  • 举报
回复
引用 10 楼 mingliang1212 的回复:
[quote=引用 9 楼 xwhbwas2008 的回复:] [quote=引用 8 楼 lianshaohua 的回复:] 一般来说是这样的: override是重写或叫覆盖; overload是重载 声明一个所派生类一样的非虚函数(派生类本身不是虚的)是隐藏,在当前类中调用时默认调用本类的,当然也有办法调用基类的同型构函数;
overwrite 有没有这个词?[/quote] 没有这个词. 红色的一句话是对的. 其他的观点也不能说是错,就是不准确. [/quote]多谢 。我同意阁下的观点。
iamnobody 2014-02-12
  • 打赏
  • 举报
回复
引用 9 楼 xwhbwas2008 的回复:
[quote=引用 8 楼 lianshaohua 的回复:] 一般来说是这样的: override是重写或叫覆盖; overload是重载 声明一个所派生类一样的非虚函数(派生类本身不是虚的)是隐藏,在当前类中调用时默认调用本类的,当然也有办法调用基类的同型构函数;
overwrite 有没有这个词?[/quote] 没有这个词. 红色的一句话是对的. 其他的观点也不能说是错,就是不准确.
方紫涵 2014-02-12
  • 打赏
  • 举报
回复
引用 8 楼 lianshaohua 的回复:
一般来说是这样的: override是重写或叫覆盖; overload是重载 声明一个所派生类一样的非虚函数(派生类本身不是虚的)是隐藏,在当前类中调用时默认调用本类的,当然也有办法调用基类的同型构函数;
overwrite 有没有这个词?
ztenv 版主 2014-02-12
  • 打赏
  • 举报
回复
一般来说是这样的: override是重写或叫覆盖; overload是重载 声明一个所派生类一样的非虚函数(派生类本身不是虚的)是隐藏,在当前类中调用时默认调用本类的,当然也有办法调用基类的同型构函数;
方紫涵 2014-02-12
  • 打赏
  • 举报
回复
引用 6 楼 u010210927 的回复:
弱弱问一句,隐藏和覆盖 有啥区别,结果不都是只执行派生类的功能而不执行基类的么?
我认为覆盖不是是重写。 你说的意思是重写吧?
海xs 2014-02-12
  • 打赏
  • 举报
回复
弱弱问一句,隐藏和覆盖 有啥区别,结果不都是只执行派生类的功能而不执行基类的么?
mujiok2003 2014-02-11
  • 打赏
  • 举报
回复
引用 4 楼 stendson 的回复:
覆盖是重新定义基类non virtual函数,基类非virtual函数则被隐藏(强烈不建议),可以通过using声明和直接调用基类函数!
你说的是隐藏,不是覆盖.
stendson 2014-02-11
  • 打赏
  • 举报
回复
重载是静态多态,是通过函数重载决议机制在编译期决定要调用的函数。 重写是在继承层次中,重写基类virtual函数,实现动态多态。 覆盖是重新定义基类non virtual函数,基类非virtual函数则被隐藏(强烈不建议),可以通过using声明和直接调用基类函数!
方紫涵 2014-02-11
  • 打赏
  • 举报
回复
覆盖 隐藏 重写 override hidden overwrite 这么翻译对不对?
方紫涵 2014-02-11
  • 打赏
  • 举报
回复
覆盖是的隐藏的话 就错了 覆盖是重写的话 感觉就对了 大家说说看
mujiok2003 2014-02-11
  • 打赏
  • 举报
回复
恩,说到点上了.

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧