日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++默认参数与函数重载

發(fā)布時間:2025/7/14 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++默认参数与函数重载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C++默認參數(shù)與函數(shù)重載

一、默認參數(shù)
在C++中,可以為參數(shù)指定默認值。在函數(shù)調(diào)用時沒有指定與形參相對應(yīng)的實參時,?就自動使用默認參數(shù)。

默認參數(shù)的語法與使用:
(1)在函數(shù)聲明或定義時,直接對參數(shù)賦值。這就是默認參數(shù);
(2)在函數(shù)調(diào)用時,省略部分或全部參數(shù)。這時可以用默認參數(shù)來代替。

注意:
(1)默認參數(shù)只可在函數(shù)聲明中設(shè)定一次。只有在無函數(shù)聲明時,才可以在函數(shù)定義中設(shè)定。
(2)默認參數(shù)定義的順序為自右到左。即如果一個參數(shù)設(shè)定了缺省值時,其右邊的參數(shù)都要有缺省值。

如:int?mal(int?a,?int?b=3,?int?c=6,?int?d=8)????正確,按從右到左順序設(shè)定默認值。
????????int?mal(int?a=6,?int?b=3,?int?c=5,?int?d)???錯誤,未按照從右到左設(shè)定默認值。c設(shè)定缺省值了,而其右邊的d沒有缺省值。
(3)默認參數(shù)調(diào)用時,則遵循參數(shù)調(diào)用順序,自左到右逐個調(diào)用。這一點要與第(2)分清楚,不要混淆。
如:void?mal(int?a,?int?b=3,?int?c=5);??????//默認參數(shù)
?????????mal(3,?8,?9?);???????????????????????????????????????//調(diào)用時有指定參數(shù),則不使用默認參數(shù)
????????mal(3,?5);???????????????????//調(diào)用時只指定兩個參數(shù),按從左到右順序調(diào)用,相當于mal(3,5,5);
????????mal(3);???????????????????????//調(diào)用時只指定1個參數(shù),按從左到右順序調(diào)用,相當于mal(5,3,5);
?????????mal(?);??????????????????????//錯誤,因為a沒有默認值
?????????mal(3,?,?9)????????????????//錯誤,應(yīng)按從左到右順序逐個調(diào)用
再如:?void?mal(int?a=8,?int?b=3,?int?c=5);??????//默認參數(shù)
??????????????mal(?);??????????????????????????????????????????????????????//正確,調(diào)用所有默認參數(shù),相當于mal(8,3,5);

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

二、函數(shù)重載
在相同的聲明域中,函數(shù)名相同,而參數(shù)表不同。通過函數(shù)的參數(shù)表而唯一標識并且來區(qū)分函數(shù)的一種特殊的函數(shù)用法。

參數(shù)表的不同表現(xiàn)為:
1、參數(shù)類型不同;
2、參數(shù)個數(shù)不同;

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

例:

#include?<iostream>
usingnamespace?std;?
int?test(int?a,int?b);?
float?test(float?a,float?b);?
void?main()?
...{?
cout?
<<?test(1,2)?<<?endl?<<?test(2.1f,3.14f)?<<?endl;?
cin.
get();?
}


int?test(int?a,int?b)?
...{?
return?a+b;?
}


float?test(float?a,float?b)?
...{?
return?a+b;?
}

在上面的程序中,用了兩個名為test的函數(shù)來描述int類型和操作的和float類型和操作,方便對相同或者相似功能函數(shù)的管理!?
那么,計算機該如何來判斷同名稱函數(shù)呢?操作的時候會不會造成選擇錯誤呢??
回答是否定的,c++內(nèi)部利用一種叫做名稱粉碎的機智來內(nèi)部重命名同名函數(shù),上面的例子在計算重命名后可能會是testii和testff?,他們是通過參數(shù)的類型或個數(shù)來內(nèi)部重命名的。

1、參數(shù)類型不同的例子:
(1)
#include<iostream.h>?
void?Add(char?x,char?y)?
{cout<<"字符串是:";?
cout<<x<<y<<endl;?
}?
void?Add(int?x,int?y)?
{cout<<"兩數(shù)的和是:?";?
cout<<x+y<<endl;?
}?
void?main()?
{?
Add('O','k');?
Add(65,100);?
}

(2)重載函數(shù)abs(),求int、float和double類型數(shù)據(jù)的絕對值。
#include?<iostream.h>?
//求int型數(shù)據(jù)的絕對值?
int?abs(int?x)?
{?
if?(x<0)?x=-x;?
return?x;?
}?
//求float型數(shù)據(jù)的絕對值?
float?abs(float?x)?
{?
if?(x<0)?x=-x;?
return?x;?
}?
//求?double型數(shù)據(jù)的絕對值?
//仿照上面的函數(shù)編寫?

//主函數(shù)?
void?main()?
{?
int?a=-357;?
float?b=63.85;?
double?c=-6974.26;?
cout<<abs(a)<<'\t'<<abs(b)<<'\t'<<abs(c)<<endl;

2、參數(shù)個數(shù)不同的例子:求2~4個整數(shù)當中的最大值,根據(jù)參數(shù)個數(shù)的不同調(diào)用不同的max()函數(shù)
#include<iostream.h>?
int?max(int?x,int?y)?
{?
if(x>y)?return?x;?
else?return?y;?
}?
int?max(int?x,int?y,int?z)?
{?
int?a=max(x,y);?
return?max(a,z);?
}?
int?max(int?a,int?b,int?c,int?d)?
{?
//自行編制這部分代碼?
}?
main()?
{?
cout<<max(1,2)<<endl;?
cout<<max(1,2,3)<<endl;?
cout<<max(1,2,3,4)<<endl;?
}?

函數(shù)重載的注意事項

1、函數(shù)的形參必須不同,或者個數(shù)不同,或者類型不同,不能夠只依靠函數(shù)的返回值類型不同或形參變量名不同來實現(xiàn)函數(shù)重載。
2、不要將不同功能的函數(shù)定義為重載函數(shù),以免出現(xiàn)對調(diào)用結(jié)果的誤解。如:
int?add(int?x,int?y){return?x+y;}
float?add(float?x,float?y){return?x-y;}

重載函數(shù)與默認參數(shù)重疊導(dǎo)致的二義性問題:
func(int);???????????????????????????????????????????????????????????????????????????????//重載函數(shù)1,只有1個參數(shù),無默認參數(shù)
func(int,?int?=4);???????????????????????????????????????????????????????????????????//重載函數(shù)2,有2個參數(shù),有1個默認參數(shù)
func(int?a=3,?int?b=4,?int?c=6);????????????????????????????????????????????//重載函數(shù)3,有3個參數(shù),有3個默認參數(shù)
fucn(float?a=3.0,?float?b=4.0?float?c=5.0);?????????????????????????????//重載函數(shù)4,有3個參數(shù),有3個默認參數(shù)
fucn(float?a=3.0,?float?b=4.0?float?c=5.0?float?d=7.9?);??????????//重載函數(shù)5,有4個參數(shù),有4個默認參數(shù)

func(2);??????????????????//可調(diào)用前3個函數(shù),出現(xiàn)二義性
func(2.0);???????????????//可調(diào)用后2個函數(shù),出現(xiàn)二義性

所以當重載函數(shù)與默認參數(shù)共同使用時,要注意出現(xiàn)二義性問題

?

轉(zhuǎn)載于:https://blog.51cto.com/yaoyong2012/940776

總結(jié)

以上是生活随笔為你收集整理的C++默认参数与函数重载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情在线免费 | 久久久久久久人妻无码中文字幕爆 | 国产东北露脸精品视频 | 在线碰| 久久久艹 | 日韩一级 | 美女午夜激情 | 伊人网色 | 亚洲高清毛片 | 日韩av在线播放不卡 | 露脸丨91丨九色露脸 | 亚洲黄色片免费看 | 视色网站 | 激情六月天婷婷 | 亚洲精品资源 | 亚欧精品视频一区二区三区 | 色婷婷激情av | jizz黄色片 | 亚洲国产精品第一页 | 涩涩视频免费观看 | 欧美国产日本在线 | 91亚色视频 | 国产aa毛片| 麻豆久久久9性大片 | 天天干,夜夜爽 | 少妇搡bbbb搡bbbb | 久久99久久98精品免观看软件 | 97成人人妻一区二区三区 | 人人超碰在线 | 美女免费网站 | 男人激情网 | 夜夜草天天草 | 噜啪啪| 成人网免费看 | 九一精品一区 | 欧美性猛交ⅹxxx乱大交3 | 亚洲精品中文无码AV在线播放 | 精品人伦一区二区三区蜜桃网站 | 日韩视频免费播放 | 在线免费观看日韩av | 日本a一级 | 国产剧情在线一区 | 天天干夜夜添 | 黄网站在线免费 | 久久久久久久久久一区 | 99在线视频免费观看 | 手机av片| 30一40一50老女人毛片 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 久久久艹| 手机在线观看av片 | 久久久九九九九 | 欧美乱码视频 | 亚洲一区网 | 国产在线成人精品午夜 | 强行侵犯视频在线观看 | 日韩区在线 | 五月色婷婷综合 | 日韩a在线观看 | 亚洲欧洲在线观看 | 日韩在线一二三 | 日韩色图视频 | 草草视频在线观看 | 日本视频免费在线播放 | 美女啪啪免费视频 | 国产精品一区二区三区在线看 | 久久久久久久黄色 | 干一干操一操 | 欧美精品久久久久久久久 | 久久精品日| 国内精品视频一区 | 亚洲成人av一区二区三区 | 国产精品久久久一区二区三区 | 日本国产一区二区 | 亚洲第一视频在线播放 | 亚洲区在线 | 国产精品久久91 | 性xxxxbbbb | 国产91网| av作品在线观看 | 极品少妇视频 | 久久精品在线视频 | 国产在线观看av | 亚洲成人看片 | 国产精品九九视频 | 天天人人综合 | 精品久久一区 | 国产一区二区三区中文字幕 | 久久久久久91亚洲精品中文字幕 | 国产又粗又猛又爽又黄的视频小说 | 国产精品久久久久久亚洲影视 | 国产视频一二三 | 一区二区国产精品 | 中文字幕一区二区三区四区五区 | 国产盗摄一区二区三区在线 | 欧美一区二区三区电影 | 欧美日韩精品区 | 久久久激情视频 |