通过具有多个参数的构造函数进行隐式转换

时间:2010-09-29 22:01:08

标签: c++ constructor casting implicit

如果我有MyClass的这两个构造函数:

MyClass(int n1);
MyClass(int n1, int n2);

和重载(非成员)operator+

MyClass operator+(MyClass m1, const MyClass& m2);

这使我能够编写如下代码:

MyClass m;
5 + m:

我想通过定义的构造函数使用隐式转换,对吗?

有没有办法用构造函数接受2个参数进行隐式转换?代码看起来像这样:

MyClass m;
{15, 8} + m:

或者只是从{9,4}到MyClass对象进行显式演员?

3 个答案:

答案 0 :(得分:5)

总之,没有。最简洁的选项是MyClass(15,8) + m;

答案 1 :(得分:1)

不,但你可以在适当的地方建造:

MyClass m;
m + MyClass(15,8);

答案 2 :(得分:0)

我不相信,但为什么你需要它是隐含的而不是明确的?如果你不得不使用括号表示法,那么它不是单个变量产生的东西,所以我不相信简单地说:

myclass(15, 8) + m;

这将在堆栈上生成它,并产生与隐式转换相同的结果。