成员变量的初始化必须推迟。该课程的最佳设计选择是什么?

用户名

假设我们有

class Foo
{
public:
    Foo(A a, B b);
    //other member functions and variables
}

class Bar
{
public:
    Bar();
private:
    Foo foo;
    //other member variables
}

理想情况下fooclass Bar应使用初始化列表来初始化的成员但是,如果的初始化foo取决于Bar构造函数中的某些操作,则初始化列表将不是一个选项。并且由于foo必须在输入Bar的构造函数之前进行初始化,因此最佳的设计选择是什么?

我四处搜寻,发现了一些选项,例如使用std::unique_ptr<Foo> pfoo;延迟类初始化私有类成员的最佳实践),但是在某种程度上,设计对我来说似乎很草率。

我想避免使用原始指针Foo *

预先感谢您的输入!

贾罗德42

您可以替换有问题的:

class Bar
{
public:
    Bar()
    {
        const Data& data = ComplexFunction();
        // How initialize foo ?
    }
private:
    Foo foo;
    //other member variables
};

通过类似:

class Bar
{
public:
    Bar() : Bar(ComplexFunction()) {} // Delegate constructor

private:
    Bar(const Data& data) : foo(data.a, data.b) {}

private:
    Foo foo;
    //other member variables
};

如果您想真正推迟构建Foo(通过两步初始化),我会使用optionalboost如果std一个不可用,使用一个(C ++ 17))。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

推迟类属性初始化的最佳方法是什么?

来自分类Dev

“变量可能尚未初始化”的设计原理是什么?

来自分类Dev

在TensorFlow中初始化变量的最佳方法是什么?

来自分类Dev

是否可以将成员变量初始化推迟到继承的类而不修改父类?

来自分类Dev

无法从成员变量的初始化字符串推断数组大小的原因是什么?

来自分类Dev

在 React 中加载 DOM 后定义/初始化变量的最佳方法是什么?

来自分类Dev

在python的类中初始化实例变量的最佳实践是什么?

来自分类Dev

初始化数据成员的列表的正确术语是什么?

来自分类Dev

初始化班级成员的更好方法是什么?

来自分类Python

在Python中初始化dict的最佳方法是什么?

来自分类Java

初始化Quartz的最佳方法是什么?

来自分类Java

初始化bean的最佳方法是什么?

来自分类Dev

进行昂贵的初始化的最佳方法是什么?

来自分类Dev

初始化数组“ memset”或“ {// value}”的最佳方法是什么?

来自分类Dev

静态成员必须初始化吗?

来自分类Dev

初始化类成员的最佳方法?

来自分类Dev

我可以在类外部初始化数组实例变量吗?以下代码的最佳OOP方法是什么?

来自分类Dev

“变量可能尚未初始化”是什么意思?

来自分类Python

在if语句中初始化的变量的作用域是什么?

来自分类Dev

初始化我的数字变量的正确方法是什么?

来自分类Dev

在C ++中初始化变量的正确方法是什么

来自分类Dev

用作自己的初始化程序的未初始化变量的行为是什么?

来自分类Dev

我必须在哪里初始化类成员变量 JavaFX

来自分类Java

变量“可运行”必须初始化

来自分类Dev

如何延迟成员变量的初始化

来自分类Dev

静态const成员变量初始化

来自分类Dev

初始化const成员变量

来自分类Dev

成员变量元组的初始化

来自分类Dev

类成员变量的初始化顺序

Related 相关文章

  1. 1

    推迟类属性初始化的最佳方法是什么?

  2. 2

    “变量可能尚未初始化”的设计原理是什么?

  3. 3

    在TensorFlow中初始化变量的最佳方法是什么?

  4. 4

    是否可以将成员变量初始化推迟到继承的类而不修改父类?

  5. 5

    无法从成员变量的初始化字符串推断数组大小的原因是什么?

  6. 6

    在 React 中加载 DOM 后定义/初始化变量的最佳方法是什么?

  7. 7

    在python的类中初始化实例变量的最佳实践是什么?

  8. 8

    初始化数据成员的列表的正确术语是什么?

  9. 9

    初始化班级成员的更好方法是什么?

  10. 10

    在Python中初始化dict的最佳方法是什么?

  11. 11

    初始化Quartz的最佳方法是什么?

  12. 12

    初始化bean的最佳方法是什么?

  13. 13

    进行昂贵的初始化的最佳方法是什么?

  14. 14

    初始化数组“ memset”或“ {// value}”的最佳方法是什么?

  15. 15

    静态成员必须初始化吗?

  16. 16

    初始化类成员的最佳方法?

  17. 17

    我可以在类外部初始化数组实例变量吗?以下代码的最佳OOP方法是什么?

  18. 18

    “变量可能尚未初始化”是什么意思?

  19. 19

    在if语句中初始化的变量的作用域是什么?

  20. 20

    初始化我的数字变量的正确方法是什么?

  21. 21

    在C ++中初始化变量的正确方法是什么

  22. 22

    用作自己的初始化程序的未初始化变量的行为是什么?

  23. 23

    我必须在哪里初始化类成员变量 JavaFX

  24. 24

    变量“可运行”必须初始化

  25. 25

    如何延迟成员变量的初始化

  26. 26

    静态const成员变量初始化

  27. 27

    初始化const成员变量

  28. 28

    成员变量元组的初始化

  29. 29

    类成员变量的初始化顺序

热门标签

归档