在本文中,您將學(xué)習(xí)什么是默認(rèn)參數(shù),如何使用它們以及使用它的必要聲明。
在C ++編程中,您可以提供函數(shù)參數(shù)的默認(rèn)值。
默認(rèn)參數(shù)背后的想法很簡(jiǎn)單。如果通過(guò)傳遞參數(shù)調(diào)用函數(shù),則這些參數(shù)將由函數(shù)使用。
但是,如果在調(diào)用函數(shù)時(shí)未傳遞參數(shù),則使用默認(rèn)值。
默認(rèn)值傳遞給函數(shù)原型中的參數(shù)。
// c++程序演示默認(rèn)參數(shù)的工作方式 #include <iostream> using namespace std; void display(char = '*', int = 1); int main() { cout << "沒(méi)有參數(shù)傳遞:\n"; display(); cout << "\n第一個(gè)參數(shù)被傳遞:\n"; display('#'); cout << "\n兩個(gè)參數(shù)被傳遞:\n"; display('$', 5); return 0; } void display(char c, int n) { for(int i = 1; i <= n; ++i) { cout << c; } cout << endl; }
輸出結(jié)果
沒(méi)有參數(shù)傳遞: * 第一個(gè)參數(shù)被傳遞: # 兩個(gè)參數(shù)被傳遞: $$$$$
在上面的程序中,您可以看到分配默認(rèn)值給參數(shù) void display(char ='*',int = 1);。
首先,在display()不傳遞任何參數(shù)的情況下調(diào)用函數(shù)。在這種情況下,display()函數(shù)同時(shí)使用了默認(rèn)參數(shù)c = *和n = 1。
然后,第二次使用該函數(shù)只傳遞第一個(gè)參數(shù)。在這種情況下,函數(shù)不使用傳遞的第一個(gè)默認(rèn)值。它使用作為第一個(gè)參數(shù)傳遞的實(shí)際參數(shù)c = #,并將默認(rèn)值n = 1作為第二個(gè)參數(shù)。
當(dāng)?shù)谌蝑isplay()被調(diào)用時(shí)傳遞兩個(gè)參數(shù),都不使用默認(rèn)參數(shù)。傳遞的值分別為 c = $和n = 5.
void add(int a, int b = 3, int c, int d = 4);
上面的函數(shù)將無(wú)法編譯。您不能跳過(guò)兩個(gè)參數(shù)之間的默認(rèn)參數(shù)。
在這種情況下,c還應(yīng)分配一個(gè)默認(rèn)值。
void add(int a, int b = 3, int c, int d);
上面的函數(shù)也不會(huì)編譯。您必須在b之后為每個(gè)參數(shù)提供默認(rèn)值。
在這種情況下,c和d也應(yīng)該被分配缺省值。
如果只需要一個(gè)默認(rèn)參數(shù),請(qǐng)確保該參數(shù)是最后一個(gè)參數(shù)。如:void add(int a, int b, int c, int d = 4);
如果您的函數(shù)執(zhí)行了多項(xiàng)操作,或者邏輯看起來(lái)過(guò)于復(fù)雜,則可以使用 函數(shù)重載更好地分離邏輯。
無(wú)論如何使用默認(rèn)參數(shù),都應(yīng)該始終編寫(xiě)一個(gè)函數(shù),使它只用于一個(gè)目的。