C++淺析缺省參數(shù)的使用
一. 概念
缺省參數(shù)(有些地方叫默認參數(shù))是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個默認值。在調(diào)用該函數(shù)時,如果沒有指定實參則采用該默認值,否則使用指定的實參。
void TestFunc(int a = 0) { cout << a << endl; } int main() { TestFunc(); //沒有傳參時,使用參數(shù)的默認值 TestFunc(10); //傳參時,使用指定的實參 }
二. 分類
全缺省參數(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();//全用默認的,全缺省 Test(1);//只有第一個不用默認的,半缺省 Test(1, 2);//只有第三個用默認的,半缺省 Test(1,2,3);//都不用默認的,不缺省 return 0; }
2. 缺省參數(shù)不能在函數(shù)聲明和定義中同時出現(xiàn),聲明和定義分離的話,必須在聲明的時候給
因為如果分離了,在編譯階段,兩個.cpp并沒有鏈接在一起,只有鏈接階段才會鏈接在一起,那么,如果是定義給了,聲明沒給,在調(diào)用函數(shù)的那個.cpp文件里包含了頭文件,里面有有函數(shù)的聲明,但是沒有函數(shù)的定義,函數(shù)的聲明里有參數(shù),但是如果你想使用缺省參數(shù),由于聲明沒給缺省參數(shù),就會出現(xiàn),這個函數(shù)有參數(shù),你需要傳參數(shù)進去,但是由于你想使用缺省參數(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)文章
vscode 配置 C/C++ 編譯環(huán)境的詳細圖文教程
這篇文章主要介紹了vscode 配置 C/C++ 編譯環(huán)境的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05