如何在父构造函数更改时更改每个子构造函数

时间:2016-04-25 05:28:37

标签: c++ inheritance design-patterns constructor

说我有以下(C ++)

class Parent
{
     Parent(Foo f){};
}

class Child : public Parent
{
    Child(Foo f, Bar b)
        : Parent(f)
    {};
}
...
// And a whole bunch of other children, all calling Parent constructor

现在假设我需要向Parent构造函数

添加一个新参数
Parent(Foo f, Baz z){};

然后我必须将每个子类更改为以下

Child(Foo f, Baz z, Bar b)
    : Parent(f, z)
{};

无论如何,我可以避免改变每一个儿童班吗?

猜猜可能与此有关, how to avoid repetitive constructor in children 这表明我必须改变每个儿童班。

如果是这样,是否有任何语言/设计模式会让这种变化不那么痛苦?

1 个答案:

答案 0 :(得分:2)

如果父构造函数的新参数是必需,那么实际上没有选择,你必须更新子类构造函数。

但是如果新参数是必需的,只需将新的父构造函数添加为重载的构造函数,或者使用新参数的默认值。