C++淺析缺省參數(shù)的使用
一. 概念
缺省參數(shù)(有些地方叫默認(rèn)參數(shù))是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)參則采用該默認(rèn)值,否則使用指定的實(shí)參。
void TestFunc(int a = 0) { cout << a << endl; } int main() { TestFunc(); //沒有傳參時(shí),使用參數(shù)的默認(rèn)值 TestFunc(10); //傳參時(shí),使用指定的實(shí)參 }
二. 分類
全缺省參數(shù)
缺省全部參數(shù)
void TestFunc(int a = 10, int b = 20, int c = 30) { cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "c = " << c << endl; }
半缺省參數(shù)
缺省部分參數(shù)
void TestFunc(int a, int b = 10, int c = 20) { cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "c = " << c << endl; }
注意:
1. 半缺省參數(shù)必須從右往左缺省,連續(xù)的,不能間隔著給
void Test(int a = 10, int b = 20, int c = 30) { cout << a << " " << b << " " << c << endl; } int main() { Test();//全用默認(rèn)的,全缺省 Test(1);//只有第一個(gè)不用默認(rèn)的,半缺省 Test(1, 2);//只有第三個(gè)用默認(rèn)的,半缺省 Test(1,2,3);//都不用默認(rèn)的,不缺省 return 0; }
2. 缺省參數(shù)不能在函數(shù)聲明和定義中同時(shí)出現(xiàn),聲明和定義分離的話,必須在聲明的時(shí)候給
因?yàn)槿绻蛛x了,在編譯階段,兩個(gè).cpp并沒有鏈接在一起,只有鏈接階段才會(huì)鏈接在一起,那么,如果是定義給了,聲明沒給,在調(diào)用函數(shù)的那個(gè).cpp文件里包含了頭文件,里面有有函數(shù)的聲明,但是沒有函數(shù)的定義,函數(shù)的聲明里有參數(shù),但是如果你想使用缺省參數(shù),由于聲明沒給缺省參數(shù),就會(huì)出現(xiàn),這個(gè)函數(shù)有參數(shù),你需要傳參數(shù)進(jìn)去,但是由于你想使用缺省參數(shù)而沒傳參數(shù),就會(huì)出現(xiàn)錯(cuò)誤因而報(bào)錯(cuò)
//a.h void TestFunc(int a = 10); // a.c void TestFunc(int a = 20) {} // 注意:如果聲明與定義位置同時(shí)出現(xiàn),恰巧兩個(gè)位置提供的值不同 //那編譯器就無法確定到底該用哪個(gè)缺省值。
3. 缺省值必須是常量或者全局變量
4. C語言不支持(編譯器不支持)
到此這篇關(guān)于C++淺析缺省參數(shù)的使用的文章就介紹到這了,更多相關(guān)C++ 缺省參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一起來學(xué)習(xí)C語言的字符串轉(zhuǎn)換函數(shù)
這篇文章主要為大家詳細(xì)介紹了C語言的字符串轉(zhuǎn)換函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02利用C++模擬實(shí)現(xiàn)STL容器:list
列表是一種順序容器,它允許在序列中的任何位置執(zhí)行常量時(shí)間插入和刪除操作,并允許在兩個(gè)方向上進(jìn)行迭代。本文將利用C++模擬實(shí)現(xiàn)list,希望對大家有所幫助2022-12-12vscode 配置 C/C++ 編譯環(huán)境的詳細(xì)圖文教程
這篇文章主要介紹了vscode 配置 C/C++ 編譯環(huán)境的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05C語言完整實(shí)現(xiàn)12種排序算法(小結(jié))
本文主要介紹了C語言完整實(shí)現(xiàn)12種排序算法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05