c++ - 我应该在 init 上设置类成员(需要动态分配)还是稍后分配

标签 c++

假设我有一个 class A 应该包含 class B 的实例(指针或直线),由于某些原因 B不能在 A 的 MIL 中启动,但稍后会在构造函数的主体中启动。

据我所知,我有 2 个选择:

  1. 在MIL中初始化B(构造函数为空或部分构造函数),稍后设置相关字段。
  2. 持有B*,当我掌握所有信息时,动态分配它。不过,这将需要 new

我想选项 1 在性能方面更好。如果性能不是问题,我应该选择哪个?

最佳答案

我会说这通常取决于如果 b 分配/初始化失败,a 是否有任何用处。如果没有 b 就没用,请将其作为 ctor 的一部分,并在 b 分配或初始化失败时让异常传播。如果 a 可以在没有 b 的情况下使用,那么 b 的初始化可以推迟。

关于c++ - 我应该在 init 上设置类成员(需要动态分配)还是稍后分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48003359/

相关文章:

c++ - Qt 堆内存损坏

c++ - 文件系统信息——如何查询?

c++ - Arduino - 通过按钮停止循环

c++ - Qt,库函数调用给出 Unresolved external symbol 错误

C++ 指针 - visual studio 抛出异常

c++ - 三任务并​​行计算

c++ - 为什么在 extern "C"中定义了 __cplusplus

c++ - Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

c# - C# 是适用于大型项目的可行语言吗?

c++ - MFC 主 UI 线程工作和模式对话框