Objective-C有虚函数的概念吗?

 我来答
挚爱一萌869660
推荐于2016-09-12 · 超过68用户采纳过TA的回答
知道答主
回答量:113
采纳率:100%
帮助的人:60.9万
展开全部
说代理是虚函数,根本就没有搞清楚C++里面的虚函数的意义是什么。虚函数是C++实现多态的基础,运行系统将根据对象的类型,自动地选择适当的具体实现运行,没有定为虚函数的方法将不具备此性质。
代理是一种委托,将一部分的功能,交予另外一个对象实现,实质是设计模式里的委托模式,相比较代理模式要简单一些。
说OC中的所有函数都是虚函数,也可以这么理解,因为OC的消息机制里面就是有根据最近原则的调用,如果查找到了会cache方法,因此本类的方法会先调用。当子类的方法存在时,会有限调用子类的方法。
C++生成的是机器代码,因此C++需要虚函数来声明方法,然后编译器针对性的编译实现函数的虚基表(实质就是一个代理,查找函数的实际地址)来实现多态,实质如此实现也会带来不小的性能损耗。而OC更加动态一些,当然性能损耗也更厉害一些,不过这种性能损耗,带来的是更灵活以及更简单的实现,提高了开发效率。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式