簡體   English   中英

C ++中的歧義定義

[英]ambigious definitions in c++

我不知道為什么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); 由於參數是通過value傳遞 ,因此可以復制到新int中的任何內容都將匹配此重載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM