簡體   English   中英

編譯問題

[英]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.

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