1. 程式人生 > >C++中的預設引數

C++中的預設引數

在C語言中,函式沒有指定引數列表,預設可以接收任意多個引數,但在C++中,因為嚴格的引數型別檢測,沒有引數列表的函式,預設為void,不接收任何引數。

預設引數:預設引數是宣告或定義函式時為函式的引數指定一個預設值。在呼叫函式時,如果沒有指定實參則採用該預設值,否者使用指定的實參。

來看一段簡單的程式碼:

#include<iostream>
using namespace std;

void test(int a = 1)
{
    cout << a << endl;
}

int main()
{
    test();
    test(10
); return 0; }

在第一個test函式中,輸出的結果是1,第二個test函式輸出結果是10。

而預設引數是分為兩類的,一類是全預設,一類是半預設

同樣用程式碼來演示一下:

首先是全預設,全預設引數所有引數都有預設值,如果沒有手動傳參,那麼編譯器會使用預設引數列表中的引數。但是這裡值得注意的是,如果傳參的時候只傳了部分引數,那麼該值會被從左至右匹配

#include<iostream>
using namespace std;

void test(int a = 1,int b = 2, int c = 3)
{
    cout << a << " "
<< b << " " << c << endl; } int main() { test(); test(10); test(10, 20); test(10, 20, 30); return 0; }

執行結果如下:
這裡寫圖片描述

半預設引數程式碼演示:

void test(int a ,int b = 2, int c = 3)
{
    cout << a << " " << b << " " << c << endl;
}

void
test1(int a, int b, int c = 3) { cout << a << " " << b << " " << c << endl; }

其中test函式至少傳一個引數,test1函式至少傳兩個引數,函式才可以正常執行。

並且這裡需要注意的是:
帶預設值的引數必須放在引數列表的最後面。因為傳參是從右向左的。
預設引數不能同時在函式宣告和定義中出現,只能二者留其一。
預設值必須是常量或者全域性變數。
C語言並不支援預設。