更新/初始化函数或构造函数(构造时不可用的数据)

时间:2016-12-23 22:24:53

标签: c++ class exception constructor

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  

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

     

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

     

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

接下来是:

  

C.42:如果构造函数无法构造有效对象,则抛出一个   例外情况

     

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