在以下情况下使用什么模式?

阿德里安

我有以下课程:

class Base {
public:
    Base(string name) {
        agg = new Aggregate(name);
    }
private:
    Aggregate* agg;
};

现在,我需要扩展此类:

class Derived : Base {
public:
    Derived(string name) : Base(name) {
        agg2 = new Aggregate2(name);
    }
private:
    Aggregate2* agg2;
};

我想要的是在创建Base对象时Aggregate需要创建的内容,而在创建Derived对象时仅Aggregate2应创建的内容。

现在,这是不会发生,因为Aggregate它的当我创建一个被称为构造函数内部创建Derived对象,并像这样AggregateAggregate2将被创建。

我可以将创建内容移到其他方法,然后在创建对象后调用它。
还有其他优雅的方式可以做我想要的吗?

贾罗德42

您可以使用以下内容:

class Base {
public:
    explicit Base(string name) : agg(new Aggregate(name)) {}
protected:
    Base() = default;
private:
    std::unique_ptr<Aggregate> agg;
};

class Derived : Base {
public:
    // implicit call to Base(), you may be explicit if you want
    Derived(string name) : agg2(new Aggregate2(name)) {}
private:
    std::unique_ptr<Aggregate2> agg2;
};

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在以下情况下使用什么模式?

来自分类Dev

在以下情况下,什么是好的设计模式?

来自分类Dev

在以下情况下如何使用线程或任务模式

来自分类Dev

在以下情况下如何使用线程或任务模式

来自分类Dev

为什么在以下情况下会发生StackOverflowError?

来自分类Dev

在以下情况下使用生成器功能有什么好处?

来自分类Dev

在以下情况下,为什么不需要对依赖类型使用typename?

来自分类Dev

在以下情况下如何使用RethinkDB索引?

来自分类Dev

在以下情况下应使用哪种排序算法?

来自分类Dev

在以下情况下如何使用Promise

来自分类Dev

如何在以下情况下使用xsl:if?

来自分类Dev

在以下情况下如何使用innertHTML

来自分类Dev

在以下情况下如何使用Promise

来自分类Dev

如何在以下情况下快速使用枚举?

来自分类Dev

在以下情况下如何访问json数据并在if条件下使用?

来自分类Dev

为什么自然联接在以下情况下将输出设为空集?

来自分类Dev

为什么在以下情况下用于接口而不是类?

来自分类Dev

为什么在以下情况下我无法调用javascript AJAX函数?

来自分类Dev

为什么在以下情况下无法访问资源ID?

来自分类Dev

为什么在以下情况下引发了不同类型的异常?

来自分类Dev

在以下情况下哪种数据库设计更好?为什么?

来自分类Dev

为什么在以下情况下无法进行数组转换和HTML解析的逻辑?

来自分类Dev

在以下情况下,为什么'var a = function(){}`与`function a(){}`类似?

来自分类Dev

为什么在以下情况下c ++会生成构造函数?

来自分类Dev

为什么在以下情况下用于接口而不是类?

来自分类Dev

为什么在以下情况下,角度的时区无法按预期工作

来自分类Dev

为什么在以下情况下分配后结构地址不等于

来自分类Dev

在以下情况下如何创建关联数组?

来自分类Dev

在以下情况下如何操作数组?

Related 相关文章

  1. 1

    在以下情况下使用什么模式?

  2. 2

    在以下情况下,什么是好的设计模式?

  3. 3

    在以下情况下如何使用线程或任务模式

  4. 4

    在以下情况下如何使用线程或任务模式

  5. 5

    为什么在以下情况下会发生StackOverflowError?

  6. 6

    在以下情况下使用生成器功能有什么好处?

  7. 7

    在以下情况下,为什么不需要对依赖类型使用typename?

  8. 8

    在以下情况下如何使用RethinkDB索引?

  9. 9

    在以下情况下应使用哪种排序算法?

  10. 10

    在以下情况下如何使用Promise

  11. 11

    如何在以下情况下使用xsl:if?

  12. 12

    在以下情况下如何使用innertHTML

  13. 13

    在以下情况下如何使用Promise

  14. 14

    如何在以下情况下快速使用枚举?

  15. 15

    在以下情况下如何访问json数据并在if条件下使用?

  16. 16

    为什么自然联接在以下情况下将输出设为空集?

  17. 17

    为什么在以下情况下用于接口而不是类?

  18. 18

    为什么在以下情况下我无法调用javascript AJAX函数?

  19. 19

    为什么在以下情况下无法访问资源ID?

  20. 20

    为什么在以下情况下引发了不同类型的异常?

  21. 21

    在以下情况下哪种数据库设计更好?为什么?

  22. 22

    为什么在以下情况下无法进行数组转换和HTML解析的逻辑?

  23. 23

    在以下情况下,为什么'var a = function(){}`与`function a(){}`类似?

  24. 24

    为什么在以下情况下c ++会生成构造函数?

  25. 25

    为什么在以下情况下用于接口而不是类?

  26. 26

    为什么在以下情况下,角度的时区无法按预期工作

  27. 27

    为什么在以下情况下分配后结构地址不等于

  28. 28

    在以下情况下如何创建关联数组?

  29. 29

    在以下情况下如何操作数组?

热门标签

归档