国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++教程:C++函數(shù)的默認(rèn)參數(shù)

2020-05-23 14:27:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
現(xiàn)在有很多電器都很人性化,比如自動(dòng)洗衣機(jī),如果想偷個(gè)懶你就可以直接把衣服扔進(jìn)去,使用自動(dòng)功能,它就能幫你全都搞定;如果哪天要洗個(gè)什么大件物品,你也可以人工對(duì)其進(jìn)行設(shè)置,同樣讓你用得得心應(yīng)手。


我們?cè)谡{(diào)用函數(shù)時(shí),可能會(huì)要填寫(xiě)很多的參數(shù),那么電腦能否像自動(dòng)洗衣機(jī)一樣,讓我們偷個(gè)懶,幫我們把參數(shù)都自動(dòng)填好呢?

我們知道,所謂自動(dòng)洗衣功能就是使用其預(yù)置好的程序進(jìn)行洗滌。如果我們也將函數(shù)的參數(shù)預(yù)置好,那么我們同樣可以不必填寫(xiě)參數(shù)就能讓函數(shù)運(yùn)作起來(lái)。這些預(yù)置的參數(shù)稱為默認(rèn)參數(shù)。

下面我們先來(lái)看一個(gè)程序,熟悉一下如何來(lái)定義默認(rèn)參數(shù):(程序6.4)
#include "iostream.h"
void create(int n=100);//在函數(shù)聲明中定義默認(rèn)參數(shù)
int main()
{
   create();//默認(rèn)實(shí)參為100
   create(5);//人工設(shè)置實(shí)參
   return 0;
}
void create(int n)//假設(shè)該函數(shù)的作用是創(chuàng)建空間
{
   cout <<"要?jiǎng)?chuàng)建" <<n <<"個(gè)空間" <<endl;
}
運(yùn)行結(jié)果:
要?jiǎng)?chuàng)建100個(gè)空間
要?jiǎng)?chuàng)建5個(gè)空間

當(dāng)調(diào)用create函數(shù),不填寫(xiě)參數(shù)時(shí),電腦自動(dòng)將參數(shù)n設(shè)置為100了。而當(dāng)我們填寫(xiě)參數(shù)時(shí),函數(shù)也能夠按照我們的意愿正常運(yùn)行。

在定義默認(rèn)參數(shù)時(shí),必須在函數(shù)聲明中定義。不過(guò),當(dāng)對(duì)多個(gè)參數(shù)設(shè)置默認(rèn)參數(shù)時(shí),會(huì)有一些麻煩的情況。

定義默認(rèn)參數(shù)的順序

當(dāng)一個(gè)函數(shù)具有多個(gè)參數(shù)時(shí),定義默認(rèn)參數(shù)的方向是從右向左的,即以最后一個(gè)參數(shù)定位的;而匹配參數(shù)的方向是從左向右的,即以第一個(gè)參數(shù)定位的,如下圖所示:

C++教程:C++函數(shù)的默認(rèn)參數(shù)如果我們要定義默認(rèn)參數(shù),那么我們必須從最后一個(gè)參數(shù)定義起,并且逐漸向前(左)定義,不可以跳過(guò)某個(gè)參數(shù),直到所有的形參都被定義了默認(rèn)值。

如果我們調(diào)用一個(gè)定義了默認(rèn)參數(shù)的函數(shù),那么我們填寫(xiě)的第一個(gè)參數(shù)一定是和最左邊形參匹配,并且逐漸向后(右)匹配,不可以中途省略某一個(gè)參數(shù),直到所有未被設(shè)置默認(rèn)值的形參都已經(jīng)有參數(shù)。

于是,在調(diào)用函數(shù)時(shí),用戶向右自定義的實(shí)參至少要和向左來(lái)的已定義默認(rèn)參數(shù)的形參相鄰,函數(shù)才能夠被成功調(diào)用。否則這個(gè)函數(shù)就是缺少參數(shù)的。

默認(rèn)參數(shù)和重載函數(shù)的混淆

我們?cè)谏弦还?jié)講了重載函數(shù)這個(gè)有用的工具,這一節(jié)的默認(rèn)參數(shù)也會(huì)給我們的程序設(shè)計(jì)帶來(lái)方便,然而我們把這兩樣有用的東西放在一起,卻會(huì)帶來(lái)不小的麻煩。我們來(lái)看下面這些函數(shù)原型:
int fn(int a);
int fn(int a,int b=2);
int fn(int a,int b=3,int c=4);

這些函數(shù)不論是從重載的角度看,還是從默認(rèn)參數(shù)的角度看都是合法的。然而,這樣的寫(xiě)法卻是不合理的。

當(dāng)我們調(diào)用函數(shù)fn(1)的時(shí)候,三個(gè)函數(shù)都是可以匹配的,因?yàn)殡娔X可以認(rèn)為我們省略了后面的參數(shù);當(dāng)我們調(diào)用函數(shù)fn(1,1)的時(shí)候,后兩個(gè)函數(shù)也都是可以匹配的……由于電腦無(wú)法確認(rèn)我們到底想要調(diào)用哪個(gè)函數(shù),所以導(dǎo)致了錯(cuò)誤的發(fā)生。

因此,我們?cè)谕瑫r(shí)使用重載函數(shù)和默認(rèn)參數(shù)的時(shí)候,要注意到這一點(diǎn)。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 诸暨市| 鲁山县| 彭山县| 图木舒克市| 宜宾市| 宝应县| 花垣县| 静安区| 晋宁县| 连云港市| 任丘市| 江永县| 华坪县| 萨嘎县| 漠河县| 连城县| 平定县| 布拖县| 盐城市| 堆龙德庆县| 内丘县| 黔江区| 黑水县| 涞源县| 宁化县| 中山市| 平安县| 秦皇岛市| 灵璧县| 德兴市| 石楼县| 仪陇县| 金阳县| 通州市| 长丰县| 台东县| 福清市| 平果县| 工布江达县| 抚顺市| 株洲市|