日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人在线免费观看 | 最新视频–x99av | 污污的视频网站在线观看 | 成人性生交大片免费看r链接 | 日韩天堂网 | 亚洲国产精品无码久久 | 91美女片黄在线观看游戏 | 亚洲福利视频网 | 蜜臀久久99精品久久久画质超高清 | 亚洲国产精品久 | 无码人妻丰满熟妇奶水区码 | 亚洲精品视频网 | 3级av| 欧美成人精品一区二区三区 | 亚洲色欲色欲www在线观看 | 久草高清视频 | 精品欧美一区二区三区 | 在线免费福利视频 | 国产日本一区二区三区 | 日本女优一区 | 中文字幕人妻精品一区 | 欧美爽妇| 亚洲精品四区 | 日韩av无码中文字幕 | 黄页网站在线 | 国产一级内谢 | 免费观看一区 | 免费操片 | 天堂在线视频网站 | 亚洲一区电影在线观看 | 国产欧美三区 | 草逼国产 | 欧美极品少妇无套实战 | 成人自拍视频网站 | 国产日批| 少妇大叫太粗太大爽一区二区 | 伊人蕉 | 少妇被爽到高潮动态图 | 国产视频欧美视频 | 中文字幕av高清 | 欧美黄色a级 | 福利一区二区在线观看 | 亚洲视频你懂的 | 一卡二卡三卡在线视频 | 久久精品aaaaaa毛片 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 青青视频二区 | 亚洲天堂中文字幕在线观看 | 人人超碰在线 | 天天干夜夜想 | 日韩精品免费一区二区三区 | 国产福利视频 | 欧美一级片免费观看 | 91福利视频在线观看 | 久操久操 | 美女色黄网站 | 91视频成人| 欧亚在线视频 | 国产中文字幕在线免费观看 | 亚洲精品视频免费看 | 人妻av一区二区 | 女人洗澡一级特黄毛片 | 成人动漫在线观看 | 不卡的中文字幕 | 久久99精品久久久久久三级 | v天堂在线观看 | 农村妇女毛片精品久久久 | 中文字幕亚洲乱码熟女1区2区 | 欧美精品国产一区 | 日韩一级片免费 | 森泽佳奈在线播放 | 国产精品午夜福利视频234区 | 日韩五码 | 日本欧美一区二区三区 | 不卡中文字幕 | 韩国女主播一区 | 日韩va中文 | 久久网一区| 亚洲制服在线观看 | 久久人人干 | 一级黄色美女视频 | 日本三级456 | 亚洲综合自拍偷拍 | 色网在线看 | 国产专区自拍 | 美女搞黄在线观看 | 九月激情网 | 女人下面喷水视频 | 欧美视频精品 | 亚洲系列在线观看 | 伊人精品在线 | 日本在线黄色 | 久久伊人久久 | 亚洲免费影院 | 97久久综合| 国产欧美精品 | 日韩视频一区二区三区 | www.199麻豆| 天天操国产|