C++中默認(rèn)參數(shù)與函數(shù)重載的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C++中默認(rèn)參數(shù)與函數(shù)重載的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++中默認(rèn)參數(shù)與函數(shù)重載的示例分析”這篇文章吧。

創(chuàng)新互聯(lián)成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元東莞做網(wǎng)站,已為上家服務(wù),為東莞各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108

一、默認(rèn)參數(shù)

在C++中,可以為參數(shù)指定默認(rèn)值。在函數(shù)調(diào)用時沒有指定與形參相對應(yīng)的實參時, 就自動使用默認(rèn)參數(shù)。

默認(rèn)參數(shù)的語法與使用:

(1)在函數(shù)聲明或定義時,直接對參數(shù)賦值。這就是默認(rèn)參數(shù);
(2)在函數(shù)調(diào)用時,省略部分或全部參數(shù)。這時可以用默認(rèn)參數(shù)來代替。

注意:

(1)默認(rèn)參數(shù)只可在函數(shù)聲明中設(shè)定一次。只有在沒有函數(shù)聲明時,才可以在函數(shù)定義中設(shè)定。(#add ,此句意為存在函數(shù)聲明和定義兩部分的時候。驗證表明有這個限制,可以隨便,但出于規(guī)范,在聲明中指定)
(2)如果一個參數(shù)設(shè)定了缺省值時,其右邊的參數(shù)都要有缺省值。(#add 這是定義時,類的成員函數(shù)的參數(shù)表在聲明時默認(rèn)參數(shù)位于參數(shù)表右部, 使用時該怎樣待總結(jié))
如:int mal(int a, int b=3, int c=6, int d=8) 正確,按從右到左順序設(shè)定默認(rèn)值。
int mal(int a=6, int b=3, int c=5, int d) 錯誤,未按照從右到左設(shè)定默認(rèn)值。c設(shè)定缺省值了,而其右邊的d沒有缺省值。
(3)默認(rèn)參數(shù)調(diào)用時,則遵循參數(shù)調(diào)用順序,自左到右逐個調(diào)用。這一點要與第(2)分清楚,不要混淆。(#add 神馬意思啊? 暫理解為兩個默認(rèn)參數(shù)之間的參數(shù)必須賦缺省值, 錯,意為調(diào)用函數(shù)時,從左至右第一個實參即為第一個形參的實參,依此類推)
如:

void mal(int a, int b=3, int c=5); //默認(rèn)參數(shù)
  mal(3, 8, 9 );//調(diào)用時有指定參數(shù),則不使用默認(rèn)參數(shù)
   mal(3, 5);     //調(diào)用時只指定兩個參數(shù),按從左到右順序調(diào)用,相當(dāng)于mal(3,5,5);
mal(3);     //調(diào)用時只指定1個參數(shù),按從左到右順序調(diào)用,相當(dāng)于mal(5,3,5);
mal( );      //錯誤,因為a沒有默認(rèn)值
mal(3, , 9)      //錯誤,應(yīng)按從左到右順序逐個調(diào)用
再如: void mal(int a=8, int b=3, int c=5); //默認(rèn)參數(shù)
mal( ); //正確,調(diào)用所有默認(rèn)參數(shù),相當(dāng)于mal(8,3,5);

(4)默認(rèn)值可以是全局變量、全局常量,甚至是一個函數(shù)。但不可以是局部變量。因為默認(rèn)參數(shù)的調(diào)用是在編譯時確定的,而局部變量位置與默認(rèn)值在編譯時無法確定。

二、函數(shù)重載

在相同的聲明域中,函數(shù)名相同,而參數(shù)表不同。通過函數(shù)的參數(shù)表而唯一標(biāo)識并且來區(qū)分函數(shù)的一種特殊的函數(shù)用法。

參數(shù)表的不同表現(xiàn)為:

1、參數(shù)類型不同;
2、參數(shù)個數(shù)不同;

特別注意:返回類型不同不可以作為函數(shù)重載的標(biāo)識。

函數(shù)重載的注意事項

1、函數(shù)的形參必須不同,或者個數(shù)不同,或者類型不同,不能夠只依靠函數(shù)的返回值類型不同或形參變量名不同來實現(xiàn)函數(shù)重載。
2、不要將不同功能的函數(shù)定義為重載函數(shù),以免出現(xiàn)對調(diào)用結(jié)果的誤解。如:

int add(int x,int y)

{

return x+y;

}

float add(float x,float y)

{

return x-y;

}

重載函數(shù)與默認(rèn)參數(shù)重疊導(dǎo)致的二義性問題:

func(int); //重載函數(shù)1,只有1個參數(shù),無默認(rèn)參數(shù)
func(int, int =4); //重載函數(shù)2,有2個參數(shù),有1個默認(rèn)參數(shù)
func(int a=3, int b=4, int c=6); //重載函數(shù)3,有3個參數(shù),有3個默認(rèn)參數(shù)
fucn(float a=3.0, float b=4.0 float c=5.0); //重載函數(shù)4,有3個參數(shù),有3個默認(rèn)參數(shù)
fucn(float a=3.0, float b=4.0 float c=5.0 float d=7.9 ); //重載函數(shù)5,有4個參數(shù),有4個默認(rèn)參數(shù)

func(2); //可調(diào)用前3個函數(shù),出現(xiàn)二義性
func(2.0); //可調(diào)用后2個函數(shù),出現(xiàn)二義性

所以當(dāng)重載函數(shù)與默認(rèn)參數(shù)共同使用時,要注意出現(xiàn)二義性問題。

以上是“C++中默認(rèn)參數(shù)與函數(shù)重載的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站bm7419.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:C++中默認(rèn)參數(shù)與函數(shù)重載的示例分析-創(chuàng)新互聯(lián)
文章鏈接:http://bm7419.com/article34/cdeise.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、企業(yè)建站、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、Google網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司