什么时候会用到多态

时间:2022-10-16 16:05:07
多态 c++

26 个解决方案

#1


当某个功能函数需要对同属一个父类的各个孙子类的特定接口进行统一实现的时候,多态就能派上用场。

#2


想想模板吧,异曲同功之妙!泛型处理!

#3


除了工厂类,其他需要switch case的时候,应该用上多态。

#4


多态技术不如代码生成技术可控、好调试。

#5


继承和多态应该 是在一起的吧

#6


面向对象的三大特性:封装、继承和多态。
如果你不用Class,不继承, 基本用不上多态。

要学OOP,就离不开多态。

#7


大多数代码只需要组合就好了,继承还是少见啊

#8


多态说白了是一组通用方法的封装,只申明方法,可实现,也可不实现。具体实现交给子类。举个例子,你现在需要对不同的图片数据进行处理,比如bmp jpg gif等等,由于不同类型的图片处理方法都基本累似,比如反转、旋转、自动、从文件读等等。为了让自己的代码简单,便于使用,就统一申明一个图片处理的基类,定义了图片处理的方法,然后每一种图片都对应一个从基类继承的虚函数方法,去实现。通过这种方式能够统一图片处理接口,方便使用,需要处理什么图片就实例化对应类。

#9


你不需要用到,说明对于你来说这些多态是没用的,不需要特别想着怎么用上。多态其实也是为了解决几类问题。

需要考虑架构,需要抽象的时候你就知道怎么用了。

如果你想了解一下多态是怎么用的,你看一下经典的设计模式,用C++怎么实现的就知道了。

#10


引用 8 楼 shen_liang_sl 的回复:
多态说白了是一组通用方法的封装,只申明方法,可实现,也可不实现。具体实现交给子类。举个例子,你现在需要对不同的图片数据进行处理,比如bmp jpg gif等等,由于不同类型的图片处理方法都基本累似,比如反转、旋转、自动、从文件读等等。为了让自己的代码简单,便于使用,就统一申明一个图片处理的基类,定义了图片处理的方法,然后每一种图片都对应一个从基类继承的虚函数方法,去实现。通过这种方式能够统一图片处理接口,方便使用,需要处理什么图片就实例化对应类。

你说的是纯虚函数的适用场景吧

#11


引用 9 楼 felguard 的回复:
你不需要用到,说明对于你来说这些多态是没用的,不需要特别想着怎么用上。多态其实也是为了解决几类问题。

需要考虑架构,需要抽象的时候你就知道怎么用了。

如果你想了解一下多态是怎么用的,你看一下经典的设计模式,用C++怎么实现的就知道了。

reactor模式看过几次,觉得人家实现得很棒,可自己就是无法上手。觉得自己对有些知识理解有缺陷,所以先来问问多态的情况

#12


引用 4 楼 zhao4zhong1 的回复:
多态技术不如代码生成技术可控、好调试。

您先让我理解多态再说

#13


你看下OOP这部分内容。就知道怎么用多态了。
简单的说,就是一个事物可以有多种状态。
比如有一个事物叫:房子
而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。

#14


所以,你可以这样定义变量(PingFang继承自House):

House *h;
PingFang pf;
h = &pf;

#15


我觉得多态跟变态差不多

#16


抛开语言层面,我也不是高手,单从管理事情角度出发,没有任何公司安排一个任务下去是没有负责人的,多态就是相当于有任务物负责人不知道是谁。这真是糟糕可怕的管理

#17


而且多态继承的代码非常难读懂和维护,不知道哪个变态设计的特性。

#18


楼主可以参考一下设计模式

#19


引用 16 楼 tajon1226 的回复:
抛开语言层面,我也不是高手,单从管理事情角度出发,没有任何公司安排一个任务下去是没有负责人的,多态就是相当于有任务物负责人不知道是谁。这真是糟糕可怕的管理

你这个例子恰好在打自己脸。公司管理而言很多时候老板分配任务只需要有人负责,而不关心具体是谁做这个任务。你如果不用多态,那就等于说你每次都需要知道谁是在具体做这件事。这管理才可怕。

#20


引用 13 楼 NineTyNine_LP 的回复:
你看下OOP这部分内容。就知道怎么用多态了。
简单的说,就是一个事物可以有多种状态。
比如有一个事物叫:房子
而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
可以结合这个例子理解理解。

#21


我会告诉你,C++三大特点封装,继承和多态。多态实现了 接口和实现分离,举个例子,一个程序通过安装组件的方式来修改或者增加功能,COM库等都利用了这一特性。

#22


我给楼主讲下我们实际运用中的一个例子吧~
我们要给一系列文档签名。有CAD,word,pdf等文档。架构时就定义了签名的虚函数(sign()),然后具体到cad、word等再具体实现签名

#23


公司新来一个同事,老板对大家说,新来同事,很多地方有不懂的,大家多帮助他。结果几个月后,新同事非常憋屈,不知道不懂的该问谁,老板也很不满意,怎么大家都不愿意教新人,大家都很委屈,我手头事那么多,哪有时间教新人。
老员工都有教新人的技能,老板发出消息,教新人,悲剧的管理

#24


马路上一个老头子摔倒了,向路人求助,谁来帮帮我,我站不起来了,结果路人都看了一下,匆匆就走了。
另外一个老太太摔倒在马路上,那个穿白色衣服的小伙子帮下忙,我摔倒了。小伙子一下懵了,大家都看着他,最终小伙子扶起来老太太。

#25


我所讲的是多态违背了做事的原则,这件事情由谁来负责,具体怎么做,谁去做,老板是不会去考虑,也不该考虑,事情做得好与不好,老板都找你负责人。

#26


引用 20 楼 u012514171 的回复:
Quote: 引用 13 楼 NineTyNine_LP 的回复:

你看下OOP这部分内容。就知道怎么用多态了。
简单的说,就是一个事物可以有多种状态。
比如有一个事物叫:房子
而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
可以结合这个例子理解理解。


引用 22 楼 YinQingwei1986 的回复:
我给楼主讲下我们实际运用中的一个例子吧~
我们要给一系列文档签名。有CAD,word,pdf等文档。架构时就定义了签名的虚函数(sign()),然后具体到cad、word等再具体实现签名

为什么你们说的场景我都能联想到可以使用纯虚函数

#1


当某个功能函数需要对同属一个父类的各个孙子类的特定接口进行统一实现的时候,多态就能派上用场。

#2


想想模板吧,异曲同功之妙!泛型处理!

#3


除了工厂类,其他需要switch case的时候,应该用上多态。

#4


多态技术不如代码生成技术可控、好调试。

#5


继承和多态应该 是在一起的吧

#6


面向对象的三大特性:封装、继承和多态。
如果你不用Class,不继承, 基本用不上多态。

要学OOP,就离不开多态。

#7


大多数代码只需要组合就好了,继承还是少见啊

#8


多态说白了是一组通用方法的封装,只申明方法,可实现,也可不实现。具体实现交给子类。举个例子,你现在需要对不同的图片数据进行处理,比如bmp jpg gif等等,由于不同类型的图片处理方法都基本累似,比如反转、旋转、自动、从文件读等等。为了让自己的代码简单,便于使用,就统一申明一个图片处理的基类,定义了图片处理的方法,然后每一种图片都对应一个从基类继承的虚函数方法,去实现。通过这种方式能够统一图片处理接口,方便使用,需要处理什么图片就实例化对应类。

#9


你不需要用到,说明对于你来说这些多态是没用的,不需要特别想着怎么用上。多态其实也是为了解决几类问题。

需要考虑架构,需要抽象的时候你就知道怎么用了。

如果你想了解一下多态是怎么用的,你看一下经典的设计模式,用C++怎么实现的就知道了。

#10


引用 8 楼 shen_liang_sl 的回复:
多态说白了是一组通用方法的封装,只申明方法,可实现,也可不实现。具体实现交给子类。举个例子,你现在需要对不同的图片数据进行处理,比如bmp jpg gif等等,由于不同类型的图片处理方法都基本累似,比如反转、旋转、自动、从文件读等等。为了让自己的代码简单,便于使用,就统一申明一个图片处理的基类,定义了图片处理的方法,然后每一种图片都对应一个从基类继承的虚函数方法,去实现。通过这种方式能够统一图片处理接口,方便使用,需要处理什么图片就实例化对应类。

你说的是纯虚函数的适用场景吧

#11


引用 9 楼 felguard 的回复:
你不需要用到,说明对于你来说这些多态是没用的,不需要特别想着怎么用上。多态其实也是为了解决几类问题。

需要考虑架构,需要抽象的时候你就知道怎么用了。

如果你想了解一下多态是怎么用的,你看一下经典的设计模式,用C++怎么实现的就知道了。

reactor模式看过几次,觉得人家实现得很棒,可自己就是无法上手。觉得自己对有些知识理解有缺陷,所以先来问问多态的情况

#12


引用 4 楼 zhao4zhong1 的回复:
多态技术不如代码生成技术可控、好调试。

您先让我理解多态再说

#13


你看下OOP这部分内容。就知道怎么用多态了。
简单的说,就是一个事物可以有多种状态。
比如有一个事物叫:房子
而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。

#14


所以,你可以这样定义变量(PingFang继承自House):

House *h;
PingFang pf;
h = &pf;

#15


我觉得多态跟变态差不多

#16


抛开语言层面,我也不是高手,单从管理事情角度出发,没有任何公司安排一个任务下去是没有负责人的,多态就是相当于有任务物负责人不知道是谁。这真是糟糕可怕的管理

#17


而且多态继承的代码非常难读懂和维护,不知道哪个变态设计的特性。

#18


楼主可以参考一下设计模式

#19


引用 16 楼 tajon1226 的回复:
抛开语言层面,我也不是高手,单从管理事情角度出发,没有任何公司安排一个任务下去是没有负责人的,多态就是相当于有任务物负责人不知道是谁。这真是糟糕可怕的管理

你这个例子恰好在打自己脸。公司管理而言很多时候老板分配任务只需要有人负责,而不关心具体是谁做这个任务。你如果不用多态,那就等于说你每次都需要知道谁是在具体做这件事。这管理才可怕。

#20


引用 13 楼 NineTyNine_LP 的回复:
你看下OOP这部分内容。就知道怎么用多态了。
简单的说,就是一个事物可以有多种状态。
比如有一个事物叫:房子
而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
可以结合这个例子理解理解。

#21


我会告诉你,C++三大特点封装,继承和多态。多态实现了 接口和实现分离,举个例子,一个程序通过安装组件的方式来修改或者增加功能,COM库等都利用了这一特性。

#22


我给楼主讲下我们实际运用中的一个例子吧~
我们要给一系列文档签名。有CAD,word,pdf等文档。架构时就定义了签名的虚函数(sign()),然后具体到cad、word等再具体实现签名

#23


公司新来一个同事,老板对大家说,新来同事,很多地方有不懂的,大家多帮助他。结果几个月后,新同事非常憋屈,不知道不懂的该问谁,老板也很不满意,怎么大家都不愿意教新人,大家都很委屈,我手头事那么多,哪有时间教新人。
老员工都有教新人的技能,老板发出消息,教新人,悲剧的管理

#24


马路上一个老头子摔倒了,向路人求助,谁来帮帮我,我站不起来了,结果路人都看了一下,匆匆就走了。
另外一个老太太摔倒在马路上,那个穿白色衣服的小伙子帮下忙,我摔倒了。小伙子一下懵了,大家都看着他,最终小伙子扶起来老太太。

#25


我所讲的是多态违背了做事的原则,这件事情由谁来负责,具体怎么做,谁去做,老板是不会去考虑,也不该考虑,事情做得好与不好,老板都找你负责人。

#26


引用 20 楼 u012514171 的回复:
Quote: 引用 13 楼 NineTyNine_LP 的回复:

你看下OOP这部分内容。就知道怎么用多态了。
简单的说,就是一个事物可以有多种状态。
比如有一个事物叫:房子
而房子又可以有:平房、楼房、别墅。这些都是房子的不同状态。也就是多态。
可以结合这个例子理解理解。


引用 22 楼 YinQingwei1986 的回复:
我给楼主讲下我们实际运用中的一个例子吧~
我们要给一系列文档签名。有CAD,word,pdf等文档。架构时就定义了签名的虚函数(sign()),然后具体到cad、word等再具体实现签名

为什么你们说的场景我都能联想到可以使用纯虚函数