C++初階教程之缺省參數(shù)與函數(shù)重載
一.缺省參數(shù)
C++祖師爺在用C寫代碼的時(shí)候,就覺得有些地方用著很不方便,于是就在C++設(shè)計(jì)了缺省參數(shù),在實(shí)現(xiàn)一些功能時(shí),用這個(gè)就方便了許多。
1.概念
缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值。在調(diào)用該函數(shù)時(shí):
a.如果沒有指定實(shí)參則采用該形參的缺省值;
b.否則使用指定的實(shí)參。
例:
2.分類
a.全缺省參數(shù):函數(shù)的所有參數(shù)都是缺省參數(shù)。
//全缺省參數(shù) void func(int a=10,int b=20) { return a+b; }
b.半缺省參數(shù):函數(shù)的部分參數(shù)是缺省參數(shù),并不是非得有一半是缺省參數(shù)。
//半缺省參數(shù) void func(int a,int b=20,int c=10) { return a+b+c; }
3.注意
a.缺省參數(shù)是從右往左,所以不能隔著給;
b.函數(shù)傳參是從左往右,所以不能跳著傳參;
c.函數(shù)的聲明和定義不能同時(shí)出現(xiàn)缺省參數(shù),只能在聲明出現(xiàn),定義不能出現(xiàn);
d.缺省值必須是常量或是全局變量。
二.函數(shù)重載
先來講講重載在生活中的例子。
簡(jiǎn)單來說就是一個(gè)詞的不同意思,我們來看一個(gè)笑話吧:
國(guó)有兩個(gè)體育項(xiàng)目大家根本不用看,也不用擔(dān)心。一個(gè)是乒乓球,一個(gè)是男足。前者是“誰也贏不了!”,后者是“誰也贏不了!
同一詞”誰也贏不了“,表達(dá)的卻是不同的意思,這就是重載。
1.概念
函數(shù)重載:是函數(shù)的一種特殊情況,C++允許在同一作用域中聲明幾個(gè)功能類似的同名數(shù);
特點(diǎn):
a.同名
b.參數(shù)的類型,個(gè)數(shù),類型順序不同
c.與返回值是否相同無關(guān)
注意:函數(shù)中有缺省參數(shù)也可以認(rèn)為是函數(shù)重載;
例:
void func() { cout << 1 << endl; } void func(int a = 10) { cout << 10 << endl; } //但這種情況要注意,如果這樣調(diào)用函數(shù):func(),就會(huì)報(bào)錯(cuò)
如果使用不當(dāng),會(huì)造成這個(gè)錯(cuò)誤:
注意以下情形并不構(gòu)成函數(shù)重載:
int add(int a, int b) { return a + b; } int add(int b, int a) { return a + b; }至于為什么不構(gòu)成,這就涉及到函數(shù)重載的原理了,下面讓我們一起來看看函數(shù)重載的原理吧。
2.C++支持函數(shù)重載的原理
C++編譯器中,調(diào)用函數(shù)時(shí),不是直接用函數(shù)名,而是會(huì)對(duì)函數(shù)名進(jìn)行修飾,根據(jù)修飾后的調(diào)用函數(shù)。而C編譯器并不會(huì)對(duì)函數(shù)進(jìn)行修飾,它是直接用函數(shù)名來調(diào)用函數(shù)的,所以C不支持函數(shù)重載。
所以上述不構(gòu)成函數(shù)重載的情形就得到了解釋。
不同環(huán)境下的修飾規(guī)則不同,vs的較為復(fù)雜,這里以Linux的修飾規(guī)則為例
Linux的修飾規(guī)則
_Z+函數(shù)名的長(zhǎng)度+函數(shù)名+參數(shù)類型的第一個(gè)字母
void func(int a,double b); //Linux環(huán)境下修飾后的:_Z4funcid
總結(jié)
到此這篇關(guān)于C++初階教程之缺省參數(shù)與函數(shù)重載的文章就介紹到這了,更多相關(guān)C++缺省參數(shù)與函數(shù)重載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07C語(yǔ)言中const和C++中的const 區(qū)別詳解
這篇文章主要介紹了C語(yǔ)言中const和C++中的const 區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04MATLAB Delaunay算法提取離散點(diǎn)邊界的方法
這篇文章主要為大家詳細(xì)介紹了MATLAB Delaunay算法提取離散點(diǎn)邊界的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12C/C++程序開發(fā)中實(shí)現(xiàn)信息隱藏的三種類型
這篇文章主要介紹了C/C++程序開發(fā)中實(shí)現(xiàn)信息隱藏的三種類型的相關(guān)資料,需要的朋友可以參考下2016-02-02C語(yǔ)言 pthread_create() 函數(shù)講解
這篇文章主要介紹了C語(yǔ)言 pthread_create() 函數(shù)講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開發(fā))
這篇文章主要介紹了C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開發(fā)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01