国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 水富县| 大竹县| 迁安市| 同心县| 榕江县| 汝城县| 湘潭市| 贵港市| 镇江市| 盐津县| 浦江县| 合川市| 荆州市| 武威市| 牟定县| 迭部县| 伊宁县| 兴山县| 沽源县| 新竹县| 贺州市| 平和县| 米泉市| 永春县| 西充县| 铁力市| 疏勒县| 玉林市| 陕西省| 盐边县| 定结县| 裕民县| 四会市| 洪雅县| 本溪市| 桐庐县| 石棉县| 旬邑县| 宁德市| 旺苍县| 汽车|