【发布时间】:2011-03-08 15:46:28
【问题描述】:
我在网上遇到了这个问题,但不相信可变数量的参数或使用桥接模式解决方案,因此我在这里问这个问题。提前致谢。
class B
{
public:
B(args_1);
B(args_2);
// and many constructors with different arg lists
};
class D : public B
{
public:
D(args_1) : B(args_1) {}
D(args_2) : B(args_2) {}
// and many constructors with different signatures similarly implemented
// some additional stuff specific to D
};
假设 B 的构造函数的 arg 列表很长,可能是 将来经常修改,在这种情况下 D 的构造函数有 进行相应的重新编码。通过复制和粘贴复制更新 肯定会在这里工作。你能提出一个更好的方法,以便 无需复制粘贴即可在一处完成更新?
【问题讨论】:
-
是否需要继承(ergo 多态行为)?
-
如果您的编译器支持任何 C++0x 功能,请考虑stackoverflow.com/questions/3119929/…
-
为了争论,我们说是的。但是我愿意看到非多态解决方案。正如我所提到的,这只是我从网上挑选的一个假设问题。
-
如果你使用 B 来定义多个类的接口,你就不能拥有一长串经常变化的参数。你必须先决定一个接口,然后再实现它。否则会做很多工作,不仅要更新构造函数,还要修改所有子类,想必会使用基类中的附加数据。
标签: c++