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

How to avoid changing every child constructor when parent constructor changes

本文关键字:构造函数 何避免      更新时间:2023-10-16

>假设我有以下内容(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(Foo f, Baz z){};

然后我将不得不将每个子类更改为以下内容

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

无论如何,我可以避免改变每个孩子的班级吗?

猜测可能与此有关,如何避免儿童重复构造函数这表明我必须改变每个儿童班级。

如果是这样,是否有任何语言/设计模式可以使这种更改不那么痛苦?

如果父构造函数的新参数是强制性的,那么实际上别无选择,您必须更新子类构造函数。

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