什么时候会用到多态

wuxupu 2014-05-15 11:23:45
为什么我写代码的时候用不上C++多态的特性,感觉自己对多态的适用领域还不够理解,请教下大家。
...全文
802 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen_liang_sl 2018-05-18
  • 打赏
  • 举报
回复
引用 10 楼 wuxupu的回复:
[quote=引用 8 楼 shen_liang_sl 的回复:] 多态说白了是一组通用方法的封装,只申明方法,可实现,也可不实现。具体实现交给子类。举个例子,你现在需要对不同的图片数据进行处理,比如bmp jpg gif等等,由于不同类型的图片处理方法都基本累似,比如反转、旋转、自动、从文件读等等。为了让自己的代码简单,便于使用,就统一申明一个图片处理的基类,定义了图片处理的方法,然后每一种图片都对应一个从基类继承的虚函数方法,去实现。通过这种方式能够统一图片处理接口,方便使用,需要处理什么图片就实例化对应类。
你说的是纯虚函数的适用场景吧[/quote] 不一定要纯虚函数,看自己,比如各种格式的图片可以在父类实现比如文件载入,修改像素的函数,因为这些函数是图片处理通用的,这样每个图片处理的子类都能使用这个函数
wuxupu 2014-05-17
  • 打赏
  • 举报
回复
引用 20 楼 u012514171 的回复:
[quote=引用 13 楼 NineTyNine_LP 的回复:] 你看下OOP这部分内容。就知道怎么用多态了。 简单的说,就是一个事物可以有多种状态。 比如有一个事物叫:房子 而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
可以结合这个例子理解理解。[/quote]
引用 22 楼 YinQingwei1986 的回复:
我给楼主讲下我们实际运用中的一个例子吧~ 我们要给一系列文档签名。有CAD,word,pdf等文档。架构时就定义了签名的虚函数(sign()),然后具体到cad、word等再具体实现签名
为什么你们说的场景我都能联想到可以使用纯虚函数
走好每一步 2014-05-16
  • 打赏
  • 举报
回复
我所讲的是多态违背了做事的原则,这件事情由谁来负责,具体怎么做,谁去做,老板是不会去考虑,也不该考虑,事情做得好与不好,老板都找你负责人。
走好每一步 2014-05-16
  • 打赏
  • 举报
回复
马路上一个老头子摔倒了,向路人求助,谁来帮帮我,我站不起来了,结果路人都看了一下,匆匆就走了。
另外一个老太太摔倒在马路上,那个穿白色衣服的小伙子帮下忙,我摔倒了。小伙子一下懵了,大家都看着他,最终小伙子扶起来老太太。
走好每一步 2014-05-16
  • 打赏
  • 举报
回复
公司新来一个同事,老板对大家说,新来同事,很多地方有不懂的,大家多帮助他。结果几个月后,新同事非常憋屈,不知道不懂的该问谁,老板也很不满意,怎么大家都不愿意教新人,大家都很委屈,我手头事那么多,哪有时间教新人。
老员工都有教新人的技能,老板发出消息,教新人,悲剧的管理
YinQingwei1986 2014-05-16
  • 打赏
  • 举报
回复
我给楼主讲下我们实际运用中的一个例子吧~ 我们要给一系列文档签名。有CAD,word,pdf等文档。架构时就定义了签名的虚函数(sign()),然后具体到cad、word等再具体实现签名
hust_wangyajun 2014-05-16
  • 打赏
  • 举报
回复
我会告诉你,C++三大特点封装,继承和多态。多态实现了接口和实现分离,举个例子,一个程序通过安装组件的方式来修改或者增加功能,COM库等都利用了这一特性。
FancyMouse 2014-05-16
  • 打赏
  • 举报
回复
引用 16 楼 tajon1226 的回复:
抛开语言层面,我也不是高手,单从管理事情角度出发,没有任何公司安排一个任务下去是没有负责人的,多态就是相当于有任务物负责人不知道是谁。这真是糟糕可怕的管理
你这个例子恰好在打自己脸。公司管理而言很多时候老板分配任务只需要有人负责,而不关心具体是谁做这个任务。你如果不用多态,那就等于说你每次都需要知道谁是在具体做这件事。这管理才可怕。
wanren13 2014-05-16
  • 打赏
  • 举报
回复
楼主可以参考一下设计模式
lanlvy 2014-05-16
  • 打赏
  • 举报
回复
引用 13 楼 NineTyNine_LP 的回复:
你看下OOP这部分内容。就知道怎么用多态了。 简单的说,就是一个事物可以有多种状态。 比如有一个事物叫:房子 而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
可以结合这个例子理解理解。
走好每一步 2014-05-15
  • 打赏
  • 举报
回复
而且多态继承的代码非常难读懂和维护,不知道哪个变态设计的特性。
走好每一步 2014-05-15
  • 打赏
  • 举报
回复
抛开语言层面,我也不是高手,单从管理事情角度出发,没有任何公司安排一个任务下去是没有负责人的,多态就是相当于有任务物负责人不知道是谁。这真是糟糕可怕的管理
走好每一步 2014-05-15
  • 打赏
  • 举报
回复
我觉得多态跟变态差不多
Symfund 2014-05-15
  • 打赏
  • 举报
回复
想想模板吧,异曲同功之妙!泛型处理!
Symfund 2014-05-15
  • 打赏
  • 举报
回复
当某个功能函数需要对同属一个父类的各个孙子类的特定接口进行统一实现的时候,多态就能派上用场。
-LanPei- 2014-05-15
  • 打赏
  • 举报
回复
所以,你可以这样定义变量(PingFang继承自House):

House *h;
PingFang pf;
h = &pf;
-LanPei- 2014-05-15
  • 打赏
  • 举报
回复
你看下OOP这部分内容。就知道怎么用多态了。 简单的说,就是一个事物可以有多种状态。 比如有一个事物叫:房子 而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
wuxupu 2014-05-15
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
多态技术不如代码生成技术可控、好调试。
您先让我理解多态再说
wuxupu 2014-05-15
  • 打赏
  • 举报
回复
引用 9 楼 felguard 的回复:
你不需要用到,说明对于你来说这些多态是没用的,不需要特别想着怎么用上。多态其实也是为了解决几类问题。 需要考虑架构,需要抽象的时候你就知道怎么用了。 如果你想了解一下多态是怎么用的,你看一下经典的设计模式,用C++怎么实现的就知道了。
reactor模式看过几次,觉得人家实现得很棒,可自己就是无法上手。觉得自己对有些知识理解有缺陷,所以先来问问多态的情况
wuxupu 2014-05-15
  • 打赏
  • 举报
回复
引用 8 楼 shen_liang_sl 的回复:
多态说白了是一组通用方法的封装,只申明方法,可实现,也可不实现。具体实现交给子类。举个例子,你现在需要对不同的图片数据进行处理,比如bmp jpg gif等等,由于不同类型的图片处理方法都基本累似,比如反转、旋转、自动、从文件读等等。为了让自己的代码简单,便于使用,就统一申明一个图片处理的基类,定义了图片处理的方法,然后每一种图片都对应一个从基类继承的虚函数方法,去实现。通过这种方式能够统一图片处理接口,方便使用,需要处理什么图片就实例化对应类。
你说的是纯虚函数的适用场景吧
加载更多回复(7)

64,648

社区成员

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

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