优先使用组合:C++编程中的设计选择
需积分: 0 91 浏览量
更新于2024-08-06
收藏 1.29MB PDF 举报
"C++语言编程规范内部公开2012-03-19 - 华为 C++"
本文档是华为技术有限公司内部的技术规范,针对C++编程语言提出了一系列编程标准,旨在提高代码质量、可维护性和可扩展性。其中,重点关注了“用组合代替继承”的原则,这是面向对象设计中的一个重要概念。
继承是C++中实现代码复用的一种机制,分为公共继承(public inheritance)、私有继承(private inheritance)和保护继承(protected inheritance)。公共继承意味着“is-a”关系,派生类具备基类的所有公有和保护成员。纯虚函数继承的是接口,不包含具体实现,而虚函数则继承接口和默认实现。非虚函数则强制继承接口及其实现,不允许派生类修改。然而,过度使用继承可能导致代码复杂度增加,尤其是多层继承和多重继承,还可能造成二义性问题。因此,华为规范建议优先考虑组合(composition)。
组合是一种“has-a”关系,一个类可以包含另一个类的对象作为其成员变量。这种方式灵活性更高,因为它允许在运行时改变对象的关联,且不会暴露基类的实现细节,降低了耦合度。当需要复用已有类的功能时,若能通过组合来实现,应优先选择组合。
此外,规范中还提到析构函数的使用,建议在析构函数中集中释放资源,并在资源释放后将其设为NULL,防止意外的二次释放。这是遵循了资源获取即初始化(RAII,Resource Acquisition Is Initialization)的设计原则,确保资源在生命周期结束后能得到妥善处理。
在继承的两种形式中,接口继承(interface inheritance)只继承成员函数的声明,而实现继承(implementation inheritance)继承了接口和实现。华为建议尽可能避免实现继承,转而使用组合。这样可以更好地封装和控制实现细节,降低变更基类时对派生类的影响。
此文档还涵盖了其他编程规范,如常量的使用、初始化和类型转换、函数的定义和内联等,这些都是为了提升代码质量和可读性。虽然没有给出所有57页的内容,但可以看出华为对于C++编程的严谨态度,以及对最佳实践的重视。
2017-12-24 上传
2020-08-28 上传
2014-06-21 上传
2020-08-10 上传
2020-08-28 上传
2020-10-19 上传
2021-09-15 上传
点击了解资源详情
2020-07-22 上传
杨_明
- 粉丝: 77
- 资源: 3886
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目