专栏首页C++核心准则原文翻译C++核心准则C.126:抽象类通常不需要构造函数‍

C++核心准则C.126:抽象类通常不需要构造函数‍

C.126: An abstract class typically doesn't need a constructor

C.126:抽象类通常不需要构造函数‍

Reason(原因)

An abstract class typically does not have any data for a constructor to initialize.

抽象类通常不包含任何需要构造函数初始化的数据。

Example(示例)

???

Exception(例外)

  • A base class constructor that does work, such as registering an object somewhere, may need a constructor.
  • 执行某些动作的基类的构造函数,例如将对象登录到某处,可能还是需要的。
  • In extremely rare cases, you might find it reasonable for an abstract class to have a bit of data shared by all derived classes (e.g., use statistics data, debug information, etc.); such classes tend to have constructors. But be warned: Such classes also tend to be prone to requiring virtual inheritance.
  • 也存在特别稀少的情况,你可能发现抽象类包含少量被所有派生类共享的数据也是合理的(例如,使用静态数据,调试信息等);这样的类有构造函数会更好些。但是需要注意的是:这样的类也可能要求虚继承。

Enforcement(实施建议)

Flag abstract classes with constructors.

对包含构造函数的抽象类进行提示。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#chierclass-designing-classes-in-a-hierarchy


觉得本文有帮助?请分享给更多人。

关注【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则C.41:构造函数生成的对象应该被完全初始化

    C.41: A constructor should create a fully initialized object C.41构造函数生成的对象应该被完全初...

    面向对象思考
  • C++核心准则C.40:如果类包含不变式,则定义构造函数

    C.40: Define a constructor if a class has an invariant

    面向对象思考
  • C++核心准则R.33: 表达函数会重置widget时,使用unique_ptr<widget>&​作参数

    R.33: 表达函数会重置widget时,使用unique_ptr<widget>&作参数。

    面向对象思考
  • 【DB笔试面试455】条件表达式CASE和DECODE的区别是什么?

    在SQL语句中使用IF-THEN-ELSE逻辑,可以使用两种方法:CASE表达式、DECODE函数。

    小麦苗DBA宝典
  • sql带条件查找最小缺失编号

      查找在CASE_SET_ID为某个条件下的最小缺失编号 如 1 3 获取的值是2 , 2 3则获取的值是...

    cfs
  • RabbitMQ入门-消息订阅模式

    ###消息派发 上篇《RabbitMQ入门-消息派发那些事儿》发布之后,收了不少反馈,其中问的最多的还是有关消息确认以及超时等场景的处理。 楼主,有遇到消费者后...

    JackieZheng
  • 对象迁移空间对索引状态的影响

    上篇文章介绍了迁移表、索引对象的操作: http://blog.csdn.net/bisal/article/details/50804714 发现漏了...

    bisal
  • 原 Postgresql-XL安装部署

    王果壳
  • Spring源码剖析5:JDK和cglib动态代理原理详解

    本文转自五月的仓颉 https://www.cnblogs.com/xrq730 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请...

    Java技术江湖
  • 三星Gear VR百万出货量怎么完成呢?送!

    镁客网

扫码关注云+社区

领取腾讯云代金券