C++淺析缺省參數(shù)的使用
一. 概念
缺省參數(shù)(有些地方叫默認(rèn)參數(shù))是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個默認(rèn)值。在調(diào)用該函數(shù)時,如果沒有指定實(shí)參則采用該默認(rèn)值,否則使用指定的實(shí)參。
void TestFunc(int a = 0) { cout << a << endl; } int main() { TestFunc(); //沒有傳參時,使用參數(shù)的默認(rèn)值 TestFunc(10); //傳參時,使用指定的實(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);//只有第一個不用默認(rèn)的,半缺省 Test(1, 2);//只有第三個用默認(rèn)的,半缺省 Test(1,2,3);//都不用默認(rèn)的,不缺省 return 0; }
2. 缺省參數(shù)不能在函數(shù)聲明和定義中同時出現(xiàn),聲明和定義分離的話,必須在聲明的時候給
因?yàn)槿绻蛛x了,在編譯階段,兩個.cpp并沒有鏈接在一起,只有鏈接階段才會鏈接在一起,那么,如果是定義給了,聲明沒給,在調(diào)用函數(shù)的那個.cpp文件里包含了頭文件,里面有有函數(shù)的聲明,但是沒有函數(shù)的定義,函數(shù)的聲明里有參數(shù),但是如果你想使用缺省參數(shù),由于聲明沒給缺省參數(shù),就會出現(xiàn),這個函數(shù)有參數(shù),你需要傳參數(shù)進(jìn)去,但是由于你想使用缺省參數(shù)而沒傳參數(shù),就會出現(xiàn)錯誤因而報錯
//a.h void TestFunc(int a = 10); // a.c void TestFunc(int a = 20) {} // 注意:如果聲明與定義位置同時出現(xiàn),恰巧兩個位置提供的值不同 //那編譯器就無法確定到底該用哪個缺省值。
3. 缺省值必須是常量或者全局變量
4. C語言不支持(編譯器不支持)
到此這篇關(guān)于C++淺析缺省參數(shù)的使用的文章就介紹到這了,更多相關(guān)C++ 缺省參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)對RGB圖片進(jìn)行編碼的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用得到的RGB信息重新對RGB圖片進(jìn)行編碼,以及對其他圖片如BMP所得到的RGB信息進(jìn)行編碼從而得到*.jpg文件,感興趣的可以了解一下2023-05-05C語言實(shí)現(xiàn)超市計價收款系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)超市計價收款系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03C++?STL之string的模擬實(shí)現(xiàn)實(shí)例代碼
C++中有命名空間的存在,我們只需把我們的代碼封到自定義的命名空間即可,下面這篇文章主要給大家介紹了關(guān)于C++?STL之string的模擬實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-01-01