社区
C++ 语言
帖子详情
谁和我说说什么时候用多态啊
abc515952853
2012-05-05 06:42:57
前几天有个同学去面试,面试技术员问了个问题,什么时候用多态,把他问闷了,他说他知道多态的条件,什么是多态,就是不知道怎么说什么时候用多态。。。我发现这个问题我也回答不上来,求指教啊~~~
...全文
619
19
打赏
收藏
谁和我说说什么时候用多态啊
前几天有个同学去面试,面试技术员问了个问题,什么时候用多态,把他问闷了,他说他知道多态的条件,什么是多态,就是不知道怎么说什么时候用多态。。。我发现这个问题我也回答不上来,求指教啊~~~
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
文人骚客
2012-05-05
打赏
举报
回复
1
多态性就是同一符号或名字在不同情况下具有不同的解释。。。多态有两种表现形式:编译时的多态和运行时的多态,编译时的多态一般通过函数重载来实现,而运行时的多态是通过虚函数来实现的。。。。
SucreKing
2012-05-05
打赏
举报
回复
[Quote=引用 17 楼 的回复:]
当你用一个指针改变指向另一个类对象时,调用结果仍是该指针原来指向的类对象的内容,此时,就要用多态性解决此问题了;
即在基类和派生类中有相同函数时,在基类的该函数前加virtual,就行了。。。
[/Quote]
这样就体现了多态性的含义
SucreKing
2012-05-05
打赏
举报
回复
当你用一个指针改变指向另一个类对象时,调用结果仍是该指针原来指向的类对象的内容,此时,就要用多态性解决此问题了;
即在基类和派生类中有相同函数时,在基类的该函数前加virtual,就行了。。。
ken_scott
2012-05-05
打赏
举报
回复
为什么面试官总喜欢问这种问题? 上次被问: 别人的程序崩溃(有源码),猜测总可能引发问题的地方?
唉,难啊
SONG_CA
2012-05-05
打赏
举报
回复
我不讲理论,我讲一个应用场景:
有一个类CShape,里面有个DrawMyself(),用来在屏幕上输出自己的形状,圆的话就画圆,方的话就画方。你从一个文件读入10000个数据,然后显示在屏幕上。程序怎么设计:
A.
所有的图形都是CShape,所以我在DrawMyself()区别,根据图形的类型我来画不同的形状,于是在这里面有成对的Switch Case对。如果每一天我们增加了一种类型,咱么办,必须修改CShape中的DrawMyself()函数,所有的代码都在这里。当心,代码很多。
B。所有的图形都是CShape,但是不同的图形DrawMyself()输出不同。好,我使用派生类,于是CRectShape、CTriangleShpe、CCircleShape,CElipseShape就产生了,每个派生类都有自己的DrawMyself()函数,但这个函数功能是不一样的。
这样的好处显而易见,某天多了一种形状,你怎么办?增加一个派生类啊。你只修改这个派生类的代码,你根本不用去碰其它已经存在的、运行良好的代码。
当然了,上面只是一个简单的例子来说明多态,多态并不是单单为了修改代码方便。其实很多东西,单看理论高深莫测,其实用的多了,自然就理解了
iamnobody
2012-05-05
打赏
举报
回复
不告诉你
纸箱猪
2012-05-05
打赏
举报
回复
[Quote=引用 12 楼 的回复:]
首先,使用多态有"偷懒"之嫌,假如楼主写到一定量程序的时候觉得可以"偷懒"了,不妨使用多态,但是在达到这些量期间只要知道多态是什么就可以了,到时候你自然会想用它.这是一个过程,同时这只是我的一家只谈.
[/Quote]
赞同。代码量大了之后,有时会发现一些逻辑可以提取出来成为公共的部分,剩余的部分就自然而然地成为多态了。
忘世麒麟
2012-05-05
打赏
举报
回复
首先,使用多态有"偷懒"之嫌,假如楼主写到一定量程序的时候觉得可以"偷懒"了,不妨使用多态,但是在达到这些量期间只要知道多态是什么就可以了,到时候你自然会想用它.这是一个过程,同时这只是我的一家只谈.
纸箱猪
2012-05-05
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
广义地,重载的确也算多态,不过它是一种静态意义上的多态,编译时确定,而非运行时确定的。通常C++中所讲的多态是一种动态意义上的多态,是运行时才能确定的。
[/Quote]
还有一种静态多态,是用模板实现的。但那属于更为高级的技巧,甚至可算是奇淫技巧。
pathuang68
2012-05-05
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
想用的时候就用。
PS.重载也算多态。
[/Quote]
广义地,重载的确也算多态,不过它是一种静态意义上的多态,编译时确定,而非运行时确定的。通常C++中所讲的多态是一种动态意义上的多态,是运行时才能确定的。
FrankHB1989
2012-05-05
打赏
举报
回复
想用的时候就用。
PS.重载也算多态。
飞天御剑流
2012-05-05
打赏
举报
回复
什么时候用多态?这么简单的问题还用问??肯定是见到美女的时候哇!!
zO_Oz
2012-05-05
打赏
举报
回复
这么简单的问题还用说?当然是:
怀孕的时候
W170532934
2012-05-05
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
1. 存在一个继承体系结构。如果不存在继承体系结构,那么所谓的多态就无从谈起
2. 在该继承体系结构中的所有类里面,均需要实现一个统一的函数接口,且该函数接口的行为在运行时才能确定这样的情形,就可以考虑使用多态
[/Quote]
++
还有没事别动多态的想法,多态会降低效率。具体的可以查看《深入探索C++对象模型》
pathuang68
2012-05-05
打赏
举报
回复
1. 存在一个继承体系结构。如果不存在继承体系结构,那么所谓的多态就无从谈起
2. 在该继承体系结构中的所有类里面,均需要实现一个统一的函数接口,且该函数接口的行为在运行时才能确定这样的情形,就可以考虑使用多态
纸箱猪
2012-05-05
打赏
举报
回复
什么时候用多态?当接口已经确定,但同一个接口在不同环境需要不同实现的时候。
abc515952853
2012-05-05
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
貌似是复制构造函数时用到吧
[/Quote]这个。。和多态没关系吧
jeakeven008
2012-05-05
打赏
举报
回复
貌似是复制构造函数时用到吧
c#基础学习之
多态
最近在看一本书《你必须知道的.Net》,书涵盖的内容比较多,对于c#,.Net平台以往所学的零散东西有了慢慢的总结和新的认识。把一些基础的东西记录于此。 先
说
说
多态
吧: 1.基类继承式
多态
如书中所
说
,基类继承式
多态
的关键是继承体系的设计与实现。书中举了个简单的列子 代码如下: Files myFile=new WORDFile(); myFile.open(); myFile是一个父类Files变量,保持了指向子类WORDFile实例的引用,然后调用一个虚方法Open,具体的调用则决定于运行时而非编译时。从设计模式的角度看,基类继承式
多态
体现了一种IS-A方式,
百度校园招聘移动软件开发工程师笔试题目.doc
百度校园招聘移动软件开发工程师笔试题目.doc
特效俄罗斯
这是一个完整的俄罗斯方块,里面代码大约1000行,%80都有注释。 用到了C#的
多态
,父类 ,继承,集合等等-里面的知识涵盖了C#个个重要的知识点,是一个不错的参考项目。
c++实例
讲述了c++中常用的实例。c++实例,讲述了c++当中需要注意的地方,通过实例进行讲解。例如:封装性,
多态
性,继承性,泛型等。
安卓java读取网页源码-questions:自问自答
安卓java读取网页源码 questions 自问自答 待初答 注:认真对待每一个答案。 Java String、StringBuilder 和 StringBuffer 有什么区别 == 和 equals 和 hashCode 有什么区别
说
说
你对 final 修饰符的理解
说
说
你对泛型的理解 泛型中 extends 和 super 的区别 描述下 Java 中的异常处理机制 什么是 HashMap,描述下其实现原理 HashMap、Hashtable 和 HashSet 这三者有什么联系和区别 列举下 Java 的集合和继承关系
说
下你对抽象类和接口的理解,以及两者的相同点和不同点 父类的静态方法能否被子类重写 描述下类的加载机制
说
说
你对 Java 反射的理解 什么是动态代理 在 Java 中 wait、yield 和 seelp 方法的不同 描述下 Java 中的内存分配 什么是
多态
,实现
多态
的机制是什么 接口(Interface)与抽象类(Abstract Class)的区别 重写(Override)与重载(Overload)的区别 父类的静态方法能否被子类重写 静态属性和静
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章