突然间理解了c++的多态性的意义。打个比喻,适当吗?

wefjsadfkj324 2012-09-10 10:37:33
男人和女人,他们都继承于人类,他们有很多共性,例如:要吃饭、要睡觉、要小便等等。

但是,男人和女人,也有很多不同的地方,例如:小便的方式就不同。

多态性的意义,就是为了实现那些“不同”。

不知道这个比喻合适不合适?

所谓多态,就是多种状态,就是不同的状态的意思。
...全文
297 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellows_huang 2012-09-10
  • 打赏
  • 举报
回复
比喻很形象...
多态可以方便程序的扩展,例如只面向人类这个基类编程就好,
当引用或指针实际指向是男人或女人时,就掉用其自己小便的方法。
而某一天如果想加个人妖,那么只需引用或指针实际指向的是人妖就好,
程序的结构不必大调整,就可以增加人妖小便了....

另外你的比喻是父类与子类之间的多态性的表现,函数重载亦是多态性的表现,没错!
xiaohuh421 2012-09-10
  • 打赏
  • 举报
回复
理解了,要进一步明白什么地方能用得上, 怎么使用多态.
想办法在你自己的工程中用一下,才能真正明白
wefjsadfkj324 2012-09-10
  • 打赏
  • 举报
回复
那继承的时候的函数重写,算不算多态?

[Quote=引用 6 楼 的回复:]

比喻是合理的。

不要忘了, 多态还包括静态多态(函数重载)。

维基百科上对于多态的描述:
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interf……
[/Quote]
jared_qin 2012-09-10
  • 打赏
  • 举报
回复
你还需要深入理解,多态在运行时,就是实现相同的代码调用,调用不同子类的功能
mujiok2003 2012-09-10
  • 打赏
  • 举报
回复
比喻是合理的。

不要忘了, 多态还包括静态多态(函数重载)。

维基百科上对于多态的描述:
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions.
wefjsadfkj324 2012-09-10
  • 打赏
  • 举报
回复
哈哈。会吗?

[Quote=引用 1 楼 的回复:]

其实……小便的方式也未必不同……
[/Quote]
wefjsadfkj324 2012-09-10
  • 打赏
  • 举报
回复
应该说相同的目的,不同的过程吧。

[Quote=引用 3 楼 的回复:]

相同的动作,不同的结果
[/Quote]
龙泉剑 2012-09-10
  • 打赏
  • 举报
回复
相同的动作,不同的结果
healer_kx 2012-09-10
  • 打赏
  • 举报
回复
我的比喻是,动物园,有狮子,有老虎。。。

不是多态就是: 狮子在吃东西,老虎在吃东西。

现在你有个基类叫动物了。

于是你可以说,动物在吃东西了,但是动物是什么?肯定会具体化到狮子和老虎身上。

没有狮子,老虎啊,动物就是个抽象的概念。
yisikaipu 2012-09-10
  • 打赏
  • 举报
回复
其实……小便的方式也未必不同……
wefjsadfkj324 2012-09-10
  • 打赏
  • 举报
回复
运行时动态绑定,那是动态多态。你忽略了静态多态,静态多态,是编译的时候,就已经确定的。

[Quote=引用 11 楼 的回复:]

比喻不恰当,多态关键的是运行时动态绑定类型。你的比喻是描述不同对象的多种形态,完全不对。
[/Quote]
wefjsadfkj324 2012-09-10
  • 打赏
  • 举报
回复
很好,还有人妖小便。

[Quote=引用 10 楼 的回复:]

比喻很形象...
多态可以方便程序的扩展,例如只面向人类这个基类编程就好,
当引用或指针实际指向是男人或女人时,就掉用其自己小便的方法。
而某一天如果想加个人妖,那么只需引用或指针实际指向的是人妖就好,
程序的结构不必大调整,就可以增加人妖小便了....

另外你的比喻是父类与子类之间的多态性的表现,函数重载亦是多态性的表现,没错!
[/Quote]
康斯坦汀 2012-09-10
  • 打赏
  • 举报
回复
比喻不恰当,多态关键的是运行时动态绑定类型。你的比喻是描述不同对象的多种形态,完全不对。

65,206

社区成员

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

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