如果我有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
对象进行显式演员?
答案 0 :(得分:5)
总之,没有。最简洁的选项是MyClass(15,8) + m;
。
答案 1 :(得分:1)
不,但你可以在适当的地方建造:
MyClass m;
m + MyClass(15,8);
答案 2 :(得分:0)
我不相信,但为什么你需要它是隐含的而不是明确的?如果你不得不使用括号表示法,那么它不是单个变量产生的东西,所以我不相信简单地说:
myclass(15, 8) + m;
这将在堆栈上生成它,并产生与隐式转换相同的结果。