中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中默認參數與函數重載的示例分析

發布時間:2021-06-15 15:39:11 來源:億速云 閱讀:136 作者:小新 欄目:編程語言

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

一、默認參數

在C++中,可以為參數指定默認值。在函數調用時沒有指定與形參相對應的實參時, 就自動使用默認參數。

默認參數的語法與使用:

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

注意:

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

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

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

二、函數重載

在相同的聲明域中,函數名相同,而參數表不同。通過函數的參數表而唯一標識并且來區分函數的一種特殊的函數用法。

參數表的不同表現為:

1、參數類型不同;
2、參數個數不同;

特別注意:返回類型不同不可以作為函數重載的標識。

函數重載的注意事項

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

int add(int x,int y)

{

return x+y;

}

float add(float x,float y)

{

return x-y;

}

重載函數與默認參數重疊導致的二義性問題:

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

func(2); //可調用前3個函數,出現二義性
func(2.0); //可調用后2個函數,出現二義性

所以當重載函數與默認參數共同使用時,要注意出現二義性問題。

以上是“C++中默認參數與函數重載的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

余庆县| 扎囊县| 涿鹿县| 长寿区| 亚东县| 峨眉山市| 珠海市| 奉化市| 广德县| 独山县| 兴安县| 阳原县| 福泉市| 交城县| 水城县| 台北市| 济宁市| 张家口市| 陆良县| 北碚区| 嵩明县| 高阳县| 乌拉特中旗| 紫金县| 万宁市| 黄梅县| 德州市| 栖霞市| 东港市| 普洱| 金川县| 鄂州市| 乐至县| 阳信县| 岱山县| 东乌| 宜宾市| 张家港市| 高清| 十堰市| 女性|