首頁 > 軟體

C++詳細分析講解函數引數的擴充套件

2022-04-20 22:00:11

一、函數引數的預設值

  • C++ 中可以在函數宣告時為引數提供一個預設值
  • 當函數呼叫時沒有提供引數的值,則使用預設值
  • 引數的預設值必須在函數宣告中指定

下面看一段程式碼:

#include <stdio.h>
int mul(int x = 0);
int main(int argc, char *argv[])
{
    printf("%dn", mul());
    printf("%dn", mul(-1));
    printf("%dn", mul(2));
    return 0;
}
int mul(int x)
{
    return x * x;
}

下面分別是該程式在 C++ 和 C語言環境下的編譯結果:

在 C++ 編譯環境下程式能夠編譯通過,而在 C 語言條件下就不行,這就說明了函數引數的預設值是 C++ 語言對 C語言的一個擴充套件。且函數引數的預設值在定義時不會報錯,如果放在函數申明時會報錯。

函數預設引數的規則

  • 引數的預設值必須從右向左提供
  • 函數呼叫時使用了預設值,則後續引數必須使用預設值

如下所示:

下面看一段程式碼感受一下:

#include <stdio.h>
int add(int x, int y = 0, int z = 0);
int main(int argc, char *argv[])
{
    printf("%dn", add(1));
    printf("%dn", add(1, 2));
    printf("%dn", add(1, 2, 3));
    return 0;
}
int add(int x, int y, int z)
{
    return x + y + z;
}

下面為輸出結果:

二、函數佔位引數

在 C++ 中可以為函數提供佔位引數

  • 佔位引數只有引數型別宣告,而沒有引數名宣告
  • 一般情況下,在函|數體內部無法使用佔位引數

也就是說,下面這種表示方法在 C++ 中是沒有問題的:

函數佔位引數的意義

  • 佔位引數與預設引數結合起來使用
  • 相容C語言程式中可能出現的不規範寫法

就比如說,下面這兩種表示方式,在 C++ 中表示相同的意思,表示沒有引數輸入;而在C 語言中前者表示可輸入引數個數不受限制,而後者表示沒有引數輸入

下面看一段程式碼:

#include <stdio.h>
int func(int x, int = 0);
int main(int argc, char *argv[])
{
    printf("%dn", func(1));
    printf("%dn", func(2, 3));
    return 0;
}
int func(int x, int)
{
    return x;
}

下面為改程式碼在C++和C語言兩種編譯條件下的輸出結果:

三、小結

  • C++ 中支援函數引數的預設值
  • 如果函數呼叫時沒有提供引數值,則使用預設值
  • 引數的預設值必須從右向左提供
  • 函數呼叫時使用了預設值,則後續引數必須使用預設值
  • C++ 中支援佔位引數,用於相容C語言中的不規範寫法

到此這篇關於C++詳細分析講解函數引數的擴充套件的文章就介紹到這了,更多相關C++引數的擴充套件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com