[英]Compiling issue
有沒有辦法進行編譯?
並使其使用帶有默認整數的fct?
使用g ++。
#include <stdio.h>
int fct(int a = 0)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
}
int main(void)
{
fct();
return (0);
}
否,因為一旦將默認值添加到fct(int)
編譯器就無法猜測您要調用的是哪個:
fct(int)
,默認值為arg fct()
您可以執行的操作是刪除默認值,然后調用fct(0)
或完全刪除不帶參數的那個。
C ++不允許您編譯歧義代碼。 如果代碼中存在歧義,則必須嘗試解決它。
函數不能重載,僅在返回類型上有所不同。
查看此鏈接以獲取示例。 http://xania.org/200711/ambiguous-overloading
以下僅適用於:
#include <stdio.h>
int fct(int a)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
printf("a: 0\n", a);
}
int main(void)
{
fct();
return (0);
}
您不能僅通過返回類型來重載函數。 讓我列出為您的情況生成的函數int fct(int a = 0)
將生成兩個函數(一個帶參數,一個不帶參數): int fct(int a)
和int fct()
除了上述函數之外,您還可以已經介紹了另一種方法void fct()
因此,您有兩種方法,它們的返回類型有所不同void fct()
和int fct()
在C ++中,您不能僅具有返回類型的變化就具有重載函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.