一个构造函数可以照顾多个对象吗?
例如:
class Add
中的构造函数有一个constructor Add(Mult m1, Div d1)
,但又有另一个构造函数带有参数Add(Div d2, Mult m2)
,有什么方法可以创建一个构造函数,从而可以确定用户输入了哪些参数并据此运行?
如果我没有多个对象,这会使我构造20个以上的构造函数?
对于两个构造函数,添加对象类型的工作基本上是相同的。在C ++中。
答案 0 :(得分:1)
好吧,如果您可以使用C ++ 11,则use可以为此使用转发引用并将其分发,类似于:
class A {
public:
template<class _First, class _Second>
A(_First&& firstArgument, _Second&& secondArgument);
};
然后,在构造函数内部,您可以使用<type_traits>
标头的功能来区分调用适当方法的类型。
但是,在C ++ 11之前,您仍然可以做类似的事情(可能为const左值引用进行硬编码),但是您可能必须自己编写许多事情。
对此问题的另一个非常常见的解决方案是创建一个超类,例如SimpleExpression
,您的类从那里继承,然后只采用基类类型。