我有这个代码:
class A
{
public:
operator int() const
{
return 100;
}
int operator+ ( int a)
{
return 10 + a;
}
};
int main()
{
A a;
int b = a + 11.5;
}
在这段代码中,编译器告诉我调用“+”是不明确的,但是我认为只有两种方法可以调用
+
:a
转换为int
类型11.5
转换为int
类型,然后使用operator+
类我认为第二种情况的优先级高于第一种情况,但是为什么会有歧义?
最佳答案
我想出了解决这个问题的方法。为了匹配重载函数,必须匹配每个参数而没有缺点,并且至少有一个是有利的,并且不能使用第一个和第二个来比较优点和缺点
关于c++ - C++函数匹配(内置转换和类类型转换的优先级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61615800/