gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:04 27 4
gpt4 key购买 nike

我有一个存储一些数据的类。问题是数据在构建时不可用。

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

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

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

最佳答案

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

C.41: A constructor should create a fully initialized object

Reason A constructor establishes the invariant for a class. A user of a classshould be able to assume that a constructed object is usable.

Exception If a valid object cannot conveniently be constructed by aconstructor, use a factory function

其次是:

C.42: If a constructor cannot construct a valid object, throw anexception

Reason Leaving behind an invalid object is asking fortrouble.

.

关于c++ - 更新/初始化函数或构造函数(构造时数据不可用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com