当前位置:首页 > 公众号精选 > CPP开发者
[导读]↓推荐关注↓如图是真实世界实践中C项目protected继承和private继承的情况:其中public继承总的平均下来几乎占99.9%,而protected继承几乎没有。private继承还能占极小部分,但也完全可以用public继承复合取代。实践是检验真理的唯一标准,现实世界...



如图是真实世界实践中C 项目protected继承和private继承的情况:


其中public继承总的平均下来几乎占99.9%,而protected继承几乎没有。private继承还能占极小部分,但也完全可以用public继承 复合取代。


实践是检验真理的唯一标准,现实世界中的这些项目情况是否能说明protected继承和private继承是没用的废物?是只会出现在语法理论和教科书中的垃圾吗?


〇、引言

既然你所统计的项目里出现了 private 继承和 protected 继承,这不正说明确实有他们的用武之地吗?


一、现有项目分析(以 STL 的三大实现为例)

让我们来康康 C 代码的标杆——STL 的源码,是怎么做的:


先来康 GCC 自带的 libstdc 的实现:


vector:


list:


deque:


forward_list:


unordered_(multi)set/map 的底层 Hashtable:


tuple 虽然是直接继承自 Tuple_impl:


但 Tuple_impl 是用到了 private 继承展开各个字段的:


pair:


mutex:


functional:


bitset:


再来康 Clang 自带的实现,libc 的:vector:


list:


string:


tuple 底层用于空基类压缩优化的:


其他的类似,我就不继续展开了,否则你这月流量不够了


最后康 MSVC 的:MSVC STL 虽然几个容器模板没有用到继承,但至少 tuple 和 varient 还是挺给我面子的:


tuple:


varient:



看吧,protected private 继承用的多普遍,更多的我还没列举完~


二、protected private 继承的实际运用场景考察

1)很多人说你用 protected private 继承倒不如用组合,把原本的基类作为一个私有或保护字段。这种论调是很没有道理的。很多时候,继承是替代不了的。比如 C 里有一种非常常见的优化技术叫:


空基类压缩优化技术


他就只能用继承去实现;而使用组合时,就没有压缩的效果。


考察下面代码,这是对 vector 压缩 allocator 字段原理的简化实现:


class MyAllocator
{

};

template <typename T, typename Allocator = MyAllocator>
class MyVector: public Allocator
{
};

void use_allocator(const MyAllocator 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

京元电子在重大讯息说明会中宣布,将出售持有苏州子公司京隆科技 92.1619% 的股权,预估交易金额约 48.85 亿人民币,将于第三季度完成交易,届时将退出中国大陆半导体制造业务。

关键字: 半导体制造 半导体封测 封装测试 京元电子

LED驱动模块RSC6218A 5W-18W迷你高效驱动电源应用,小功率、小体积、高效率

关键字: LED驱动模块 驱动电源应用 LED电源芯片

业内消息,近日台积电在北美技术研讨会上宣布,正在研发 CoWoS 封装技术的下个版本,可以让系统级封装(SiP)尺寸增大两倍以上,实现 120x120mm 的超大封装,功耗可以达到千瓦级别。

关键字: CoWoS 台积电 封装

据外媒报道,字节正在内部探索出售TikTok美国业务多数股权,并援引内部人士披露的信息称 “沃尔玛或为最理想买家”。报道还称,讨论中的一种情况是字节出售美国50%以上TikTok股份,但保留少数股权。

关键字: 字节跳动 TikTok

业内消息,HMD 正在计划重启一些经典的诺基亚功能手机。今年 3 月初,该公司预告了将于 5 月发布的一款功能手机。现在该机的身份已经曝光,新款诺基亚 3210 的谍照已经泄露,展现了新机部分新特性。

关键字: 诺基亚 功能机 HMD

业内消息,近日有一位网友在各大社交媒体发文表示,自己离职后,公司将自己所有的期权全部作废。

关键字: 期权 微博

业内消息,在昨天的中关村论坛未来人工智能先锋论坛上,生数科技联合清华大学正式发布中国首个长时长、高一致性、高动态性视频大模型——Vidu。Vidu是自Sora发布之后全球率先取得重大突破的视频大模型,性能全面对标Sora...

关键字: Sora 清华 AI Vidu

业内消息,近日高通公司宣布推出针对桌面平台的全新骁龙 X Plus 处理器。

关键字: 高通 骁龙 X Plus 处理器

近日,台积电在圣克拉拉年度技术研讨会上宣布首个“埃级”制程技术:A16。A16 是台积电首次引入背面电源输送网络技术,计划于 2026 年下半年开始量产。同时,台积电也在重新命名工艺节点,标志着「埃级」时代的开始。

关键字: 台积电 A16

4 月 25 日消息,4 月 25 日,国际数据公司(IDC)发布 2024 年第一季度中国手机市场跟踪报告,荣耀以 17.1% 的市场份额拿下第一,华为占 17.0% 位列第二,OPPO、苹果和 vivo 分别位列第三...

关键字: 荣耀 华为
关闭
关闭