C++中的預設引數
阿新 • • 發佈:2019-01-07
在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語言並不支援預設。