C++中缺省參數(shù)的使用
缺省參數(shù)概念
缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值。在調(diào)用該函數(shù)時(shí),如果沒(méi)有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。
void Print(int num = 0)
{
cout << num << endl;
}
int main()
{
Print(); //沒(méi)有傳參時(shí),使用缺省值,即打印0
Print(10); //有傳參時(shí),使用指定實(shí)參,即打印10
}
缺省參數(shù)分類(lèi)
全缺省參數(shù)
顧名思義,對(duì)于函數(shù)中的每個(gè)參數(shù),全都給定缺省值,這就是全缺省參數(shù)了。??
void Add2Num(int num1 = 0, int num2 = 0)
{
return num1 + num2;
}
半缺省參數(shù)
半缺省參數(shù)是指:不是每個(gè)函數(shù)參數(shù)都給缺省值,即有些參數(shù)給了缺省值,有些參數(shù)沒(méi)給缺省值。??
void Cal(int num1, int num2, int num3 = 0, int num4 = 0)
{
return num1 * num2 + num3 * num4;
}
注意事項(xiàng)
1.半缺省參數(shù)必須從右往左依次給出,不能間隔著給。像下面這樣的用法是錯(cuò)的,因?yàn)?code>num3沒(méi)有缺省值??
void Cal(int num1, int num2 = 0, int num3, int num4 = 0)
{
return num1 * num2 + num3 * num4;
}
2.缺省參數(shù)不能在函數(shù)聲明和實(shí)現(xiàn)中同時(shí)出現(xiàn),即使給的缺省值是一樣的。下面的代碼就是錯(cuò)誤的??
//函數(shù)聲明 int Add2Num(int num1 = 0, int num2 = 0); //函數(shù)實(shí)現(xiàn) int Add2Num(int num1 = 0, int num2 = 0);
ps:函數(shù)的聲明和實(shí)現(xiàn)中,只能選擇在其中一處給出缺省參數(shù)。假如用戶(hù)在聲明和實(shí)現(xiàn)給的缺省值不同,那編譯器不知道以誰(shuí)為準(zhǔn)。
//函數(shù)聲明
void Print(int num = 0);
//函數(shù)實(shí)現(xiàn)
void Print(int num = 10)
{
cout << num << endl;
}
3.缺省值必須是常量或者全局變量。
4.C語(yǔ)言不支持缺省參數(shù)。(編譯器不支持)
到此這篇關(guān)于C++中缺省參數(shù)的使用的文章就介紹到這了,更多相關(guān)C++ 缺省參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c語(yǔ)言:基于函數(shù)指針的兩個(gè)示例分析
本篇文章是對(duì)c語(yǔ)言中函數(shù)指針的兩個(gè)示例做了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語(yǔ)言實(shí)現(xiàn)經(jīng)典排序算法的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)經(jīng)典排序算法中的冒泡排序、選擇排序、插入排序、希爾排序,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-08-08
c++類(lèi)的隱式轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換重載詳解
轉(zhuǎn)換函數(shù)的名稱(chēng)是類(lèi)型轉(zhuǎn)換的目標(biāo)類(lèi)型,因此,不必再為它指定返回值類(lèi)型;轉(zhuǎn)換函數(shù)是被用于本類(lèi)型的數(shù)值或變量轉(zhuǎn)換為其他的類(lèi)型,也不必帶參數(shù)2013-09-09
Qt處理焦點(diǎn)事件(獲得焦點(diǎn),失去焦點(diǎn))
本文主要介紹了Qt處理焦點(diǎn)事件(獲得焦點(diǎn),失去焦點(diǎn)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
c++中string類(lèi)型和int類(lèi)型相互轉(zhuǎn)換的幾種常用方法
我們?cè)诰帉?xiě)程序時(shí),經(jīng)常涉及到int與string之間的類(lèi)型轉(zhuǎn)換,本文主要介紹了c++中string類(lèi)型和int類(lèi)型相互轉(zhuǎn)換的幾種常用方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
QT實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
C語(yǔ)言實(shí)現(xiàn)投票系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)投票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
C++利用Socket實(shí)現(xiàn)主機(jī)間的UDP/TCP通信
這篇文章主要為大家詳細(xì)介紹了C++如何利用Socket實(shí)現(xiàn)主機(jī)間的UDP/TCP通信功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01

