gpt4 book ai didi

c++ - 一个构造函数可以处理多种类型的不同对象参数吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:53 24 4
gpt4 key购买 nike

一个构造函数可以处理多个对象吗?

例如:

来自 class Add 的构造函数有一个 constructor Add(Mult m1, Div d1) 但还有另一个构造函数接受参数 Add(Div d2, Mult m2),有没有什么方法可以创建一个构造函数,它可以决定用户输入的参数并根据该参数运行?

如果不是,我有多个对象会导致我创建超过 20 个构造函数?

两个构造函数的工作基本相同,即添加对象类型。在 C++ 中。

最佳答案

类型级别

好吧,如果你可以使用 C++11,那么可以使用转发引用并分派(dispatch)它们,类似于:

class A {
public:
template<class _First, class _Second>
A(_First&& firstArgument, _Second&& secondArgument);
};

然后在构造函数中您可以使用 <type_traits> 的功能 header 以区分类型并调用适当的方法。

然而,在 C++11 之前,您仍然可以做类似的事情(可能对 const 左值引用进行硬编码),但您可能必须自己编写很多东西。

多态性

另一个非常常见的解决方案是创建一个父类(super class),例如SimpleExpression您的类从哪里继承,然后只采用基类类型。

关于c++ - 一个构造函数可以处理多种类型的不同对象参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54320350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com