Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

谈谈继承的局限性(2)

来源: 未知 分享至:

\"\"

接口用来描述层次关系,各个类独立实现。由此也可以看出,虽然C++中的接口是用纯虚类继承实现的,但实际上接口机制和继承机制是两种完全不同的东西

 

到现在为止,我们可以得出结论:继承机制实际上很难描述现实概念的层次关系,这是它的局限性对继承的应用很多情况下并不是为了描述真实概念的层次关系,而只是组织代码的一种形式。比如可以尝试下用继承关系描述一棵进化树,你会发现这个基本上很难。

 

C++中引入继承机制的目的是什么,大部分资料对此都语焉不详,但是无论如何至少有一半的目的是为了组织和复用代码,继承扩展是很常用的手法,在MFCWTL等框架中到处可以看到这样的代码。但是在实际的应用中一定要避免单纯为了复用代码而使用继承机制,典型的案例比如窗口和控件。

窗口和控件是两种完全不同的东西,微软为了复用消息机制把两个概念硬是揉在了一起,所有的控件都从窗口继承下来,这直接导致了GUI框架的高复杂度和难以扩展。

代码复用只是良好设计的副产品而不应该是设计本身的目的。

 

最后总结一下本文的核心观点:

1.       继承机制有很大的局限性,难于描述现实概念的层次关系;

2.       使用继承时避免生搬硬套现实概念的层次关系;

3.       避免单纯以代码复用为目的使用继承。

 

参考:

    CSDN上关于C++继承的深入讨论:继承是什么和应该是什么

原创文章,转载请注明出处。微博:@飞舞的烟灰缸

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史