【问题标题】:Update/Init function or constructor (data not available at construction time)更新/初始化函数或构造函数(构建时数据不可用)
【发布时间】:2017-05-09 13:46:19
【问题描述】:

我有一个存储一些数据的类。 问题是施工时数据不可用。

重要提示:这些类适用于具有只读类(仅 getter)的 SDK。 这些类仅存储来自在线 API 的数据。

当数据可用时,我应该使用指针并创建(分配)对象吗? 这需要构造函数在数据无效或构造函数在某些时候失败时抛出异常。

或者我应该为对象定义一个默认构造函数并实现一个更新/初始化函数来初始化类成员。 这个解决方案会产生问题,在调用更新函数之前我有一个“僵尸”对象。 第二个问题是您可能忘记调用 update/init 函数 -> 导致第一个问题。

【问题讨论】:

    标签: c++ class exception constructor


    【解决方案1】:

    根据 CPP 核心指南 (http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines):

    C.41:构造函数应该创建一个完全初始化的对象

    原因构造函数为类建立不变量。一个类的用户 应该能够假设构造的对象是可用的。

    异常如果一个有效的对象不能方便地由一个 构造函数,使用工厂函数

    接着是:

    C.42: 如果构造函数不能构造一个有效的对象,抛出一个 异常

    Reason 留下一个无效的对象是要求 麻烦。

    .

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 2018-06-04
      相关资源
      最近更新 更多