如何避免在父构造函数更改时更改每个子构造函数
How to avoid changing every child constructor when parent constructor changes
>假设我有以下内容(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)
{};
无论如何,我可以避免改变每个孩子的班级吗?
猜测可能与此有关,如何避免儿童重复构造函数这表明我必须改变每个儿童班级。
如果是这样,是否有任何语言/设计模式可以使这种更改不那么痛苦?
如果父构造函数的新参数是强制性的,那么实际上别无选择,您必须更新子类构造函数。
但是,如果新参数不是必需的,则只需将新的父构造函数添加为重载构造函数,或为新参数使用默认值。
相关文章:
- 有没有办法避免为 std::variant 类成员中的所有类型编写构造函数?
- 是否可以避免在以下代码中复制/移动构造函数的需要?
- 避免通过操作从私有构造函数间接实例化
- 避免矩阵复制构造函数
- 避免在构造函数中分配或保持简单性(和 RAII?
- 使用 emplace_back 避免移动构造函数调用的最佳方法?
- 避免复制子类中的所有构造函数
- 将一组类转换为类模板并避免构造函数模棱两可
- 在类构造函数中初始化映射时,如何避免内存泄漏
- 如何避免在 c++11 中触发这种复制构造函数?
- 调用委托构造函数时避免复制
- 仅仅以避免隐式复制构造函数删除,使用shared_ptr而不是unique_ptr作为类成员明智
- 在C++11中按值返回构造的对象时,避免复制构造函数调用
- 我可以避免在std ::变体中明确编写每个结构的构造函数
- 双重列表复制构造函数:与单一列表复制构造函数有何不同
- 定义专用模板类构造函数时避免重复
- 如何在使用 std::make_tuple 时避免构造函数的未定义执行顺序
- C++调用不同的类构造函数,避免切换
- 使用委托构造函数来避免泄漏
- 如何在调用父构造函数时避免模板参数上的样板文件