C++超詳細講解函數(shù)參數(shù)的默認值
1.參數(shù)默認值的指定方式
在 C++ 中,可以在函數(shù)聲明時為參數(shù)提供一個默認值。這樣在函數(shù)調(diào)用時,如果沒有提供函數(shù)參數(shù)值,則使用默認值。
e.g. 在函數(shù)聲明時,指定參數(shù)默認值
void Demo(int x = 0); int main(int argc, char* argv[]) { Demo(); // 不用提供參數(shù),會將 x = 0 的結(jié)果輸出 return 0; } void Demo(int x) { printf("x = %d\r\n", x); }
e.g. 沒有函數(shù)聲明,直接在函數(shù)定義時指定參數(shù)默認值
void Demo(int x = 5) { printf("x = %d\r\n", x); } int main(int argc, char* argv[]) { Demo(); return 0; }
注意:參數(shù)的默認值必須在函數(shù)聲明中指定
error e.g. 在函數(shù)的聲明和定義中均指定默認值
void Demo(int x = 0); int main(int argc, char* argv[]) { Demo(); return 0; } void Demo(int x = 10) { printf("x = %d\r\n", x); }
error e.g. 僅僅在函數(shù)的定義中指定默認值
void Demo(int x); int main(int argc, char* argv[]) { Demo(); return 0; } void Demo(int x = 10) { printf("x = %d\r\n", x); }
2.參數(shù)默認值的指定規(guī)則
參數(shù)的默認值必須 從右向左 提供,即 未指定默認值的參數(shù)不能出現(xiàn)在指定默認值參數(shù)的右邊,正確錯誤示例如下所示:
// ok void Demo(int x, int y = 1; int z = 2); // error void Demo(int x = 0, int y, int z = 2);
為什么指定這個規(guī)則呢?
在 C++ 中調(diào)用函數(shù)時,對于沒有指定默認值的參數(shù),是可以不用對其傳入?yún)?shù)的,而且不會報錯。
有一個如下代碼所示的函數(shù):
void Demo(int x, int y = 1, int z = 2) { printf("x = %d\r\n", x); printf("y = %d\r\n", y); printf("z = %d\r\n", z); }
當調(diào)用這個函數(shù)時,可以執(zhí)行下面的代碼進行調(diào)用:
int main(int argc, char* argv[]) { Demo(0); return 0; }
上面所述的調(diào)用方式是沒有錯的,此時將 0 賦值給 x,參數(shù) y、z 分別使用默認值。但是,如果函數(shù)是如下代碼所示的:
void Demo(int x = 0, int y, int z = 2) { printf("x = %d\r\n", x); printf("y = %d\r\n", y); printf("z = %d\r\n", z); }
當我們用上述同樣的方式進行調(diào)用時:
int main(int argc, char* argv[]) { Demo(0); return 0; }
此時,代碼是編譯不過的,因為編譯器默認把 0 賦值給 x,導致沒有給參數(shù) y 傳入值而報錯。到這里,應該就曉得制定這個規(guī)則的好處了,這樣在調(diào)用函數(shù)的時候,只需要從左向右傳入?yún)?shù)。如果未指定的默認值的參數(shù)出現(xiàn)在指定默認值參數(shù)的右邊,那么就必須對指定默認值的參數(shù)傳入?yún)?shù)。如下代碼所示的調(diào)用方式均正確:
int main(int argc, char* argv[]) { Demo(0); Demo(0, 3); Demo(0, 3, 4); return 0; }
到此這篇關(guān)于C++超詳細講解函數(shù)參數(shù)的默認值的文章就介紹到這了,更多相關(guān)C++函數(shù)參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VisualStudio2022提交git代碼的方法實現(xiàn)
本文主要介紹了VisualStudio2022提交git代碼的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07C語言實現(xiàn)職工工資管理系統(tǒng)的示例代碼
這篇文章主要為大家詳細介紹了C語言如何實現(xiàn)職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08