您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++缺省參數與函數重載怎么調用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++缺省參數與函數重載怎么調用”吧!
缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數時:
a.如果沒有指定實參則采用該形參的缺省值;
b.否則使用指定的實參。
例:
a.全缺省參數:函數的所有參數都是缺省參數。
//全缺省參數 void func(int a=10,int b=20) { return a+b; }
b.半缺省參數:函數的部分參數是缺省參數,并不是非得有一半是缺省參數。
//半缺省參數 void func(int a,int b=20,int c=10) { return a+b+c; }
a.缺省參數是從右往左,所以不能隔著給;
b.函數傳參是從左往右,所以不能跳著傳參;
c.函數的聲明和定義不能同時出現缺省參數,只能在聲明出現,定義不能出現;
d.缺省值必須是常量或是全局變量。
先來講講重載在生活中的例子。
簡單來說就是一個詞的不同意思,我們來看一個笑話吧:
國有兩個體育項目大家根本不用看,也不用擔心。一個是乒乓球,一個是男足。前者是“誰也贏不了!”,后者是“誰也贏不了!
同一詞”誰也贏不了“,表達的卻是不同的意思,這就是重載。
函數重載:是函數的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名數;
特點:
a.同名
b.參數的類型,個數,類型順序不同
c.與返回值是否相同無關
注意:函數中有缺省參數也可以認為是函數重載;
例:
void func() { cout << 1 << endl; } void func(int a = 10) { cout << 10 << endl; } //但這種情況要注意,如果這樣調用函數:func(),就會報錯
如果使用不當,會造成這個錯誤:
注意以下情形并不構成函數重載:
int add(int a, int b) { return a + b; } int add(int b, int a) { return a + b; }至于為什么不構成,這就涉及到函數重載的原理了,下面讓我們一起來看看函數重載的原理吧。
C++編譯器中,調用函數時,不是直接用函數名,而是會對函數名進行修飾,根據修飾后的調用函數。而C編譯器并不會對函數進行修飾,它是直接用函數名來調用函數的,所以C不支持函數重載。
所以上述不構成函數重載的情形就得到了解釋。
不同環境下的修飾規則不同,vs的較為復雜,這里以Linux的修飾規則為例
_Z+函數名的長度+函數名+參數類型的第一個字母
void func(int a,double b); //Linux環境下修飾后的:_Z4funcid
感謝各位的閱讀,以上就是“C++缺省參數與函數重載怎么調用”的內容了,經過本文的學習后,相信大家對C++缺省參數與函數重載怎么調用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。