c++ - C++函数匹配(内置转换和类类型转换的优先级)

标签 c++ language-lawyer

我有这个代码:

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/

    相关文章:

    c++ - 图形时间线创建用于分析多线程 C++ 程序的软件 API

    c++ - 模板参数替换令人惊讶?

    c++ - C++ 标准中与 [basic.link]/7 相关的 GCC 和 clang 之间的矛盾结果

    c++ - 在 A* 遍历后从 map 中移除产生最佳路径的障碍

    c++ - vector 类中删除函数的正确实现是什么

    c++ - 在macOS的片段着色器中未声明gl_PointCoord吗?

    c++ - 具有默认参数构造的 noexcept 说明符

    c++ - 使用线程池的 std::async 的 Visual C++ 实现是否合法

    c++ - 指向非法引用的成员的指针?

    c++ - CoInitialize() 在 C++ 中未被调用异常