C++ 中的定义不明确

ambigious definitions in c++

本文关键字:不明确 定义 C++      更新时间:2023-10-16

我不知道为什么f的调用是模棱两可的:/我知道这三个声明没问题,但在这种情况下,这是行不通的。

#include <iostream>
using namespace std;
void f(int);
void f(int &);
void f(const int &);
void f(int a);
void f(int &a);
   void f(const int &a);

int main()
{
    int i=1;
    const int ic=2;
    int &ri=i;
    const int & rc=ic;
    f(i);
    f(ic);
    f(ri);
    f(rc);
    return 0;
}

我知道这三个声明是可以

如何?所有参数都可以转换为 int 。模棱两可是显而易见的。

你认为int x = rc;不会编译吗?

我认为您的困惑源于void f(int);.由于参数是按值传递的,因此可以在新int中复制的任何内容都与此重载匹配。