最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++淺析函數(shù)重載是什么

 更新時(shí)間:2022年08月12日 16:21:02   作者:智者不如愛河  
C++?允許多個(gè)函數(shù)擁有相同的名字,只要它們的參數(shù)列表不同就可以,這就是函數(shù)的重載(Function?Overloading),借助重載,一個(gè)函數(shù)名可以有多種用途

前言

這是一個(gè)非常重要的點(diǎn)

函數(shù)重載:是函數(shù)的一種特殊情況,C++允許在同一作用域中聲明幾個(gè)功能類似的同名函數(shù)。

這些同名函數(shù)的 形參列表(參數(shù)個(gè)數(shù) 或 類型 或 順序)必須不同,常用來處理實(shí)現(xiàn)功能類似數(shù)據(jù)類型不同的問題

或者說,給一個(gè)名字賦予第二層意義,一詞多義,有點(diǎn)內(nèi)涵那意思

函數(shù)重載

首先C語言不允許定義同名的函數(shù),但是C++可以,原因就涉及到了函數(shù)重載

函數(shù)重載的要求:函數(shù)名相同,參數(shù)不同(參數(shù)類型不同,參數(shù)個(gè)數(shù)不同)

例子:

定義三個(gè)函數(shù)名相同的函數(shù),在C++中可以構(gòu)成函數(shù)重載

這三個(gè)函數(shù)的函數(shù)名一樣,但是類型不同

int ADD(int left, int right) {
	return left + right;
}
double ADD(double left, double right) {
	return left + right;
}
long ADD(long left, long right) {
	return left + right;
}

它們的類型分別是int,double,long。

而且個(gè)數(shù)不同也能構(gòu)成函數(shù)重載。

下面來打印玩一下(剛開始玩打印很正常,但是工作中很少用)

int main(void) {
	cout << ADD(1,2) << endl;
	cout << ADD(1.2, 2.2) << endl;
	cout << ADD(40l, 40l) << endl;
	return 0;
}

結(jié)果:

感覺是調(diào)用的是一個(gè)函數(shù),但其實(shí)不止一個(gè),因?yàn)檫@個(gè)函數(shù)被重載了,所以有三層定義。

實(shí)際上調(diào)用的是

1:int類型的

2:double類型的

3:long類型的。

一些其他問題

缺省算不算重載 ?

//NO.1
int ADD(int left, int right) {
	return left + right;
}
//NO.2
int ADD(int left = 1, int right = 2) {
	return left + right;
}

注意 : NO.1和NO.2兩個(gè)不算重載,因?yàn)闃?gòu)成重載的條件是參數(shù)的類型不同或者個(gè)數(shù)不同,以上均不滿足 。重載只看類型

但是

//NO.2
int ADD(int left = 1, int right = 2) {
	return left + right;
}
//NO.3
double ADD(double left, double right) {
	return left + right;
}

NO.2和NO.3是構(gòu)成重載的,因?yàn)闈M足了重載的條件

函數(shù)重載的要求:函數(shù)名相同,參數(shù)不同(參數(shù)類型不同,參數(shù)個(gè)數(shù)不同)

綜上所述,缺省和重載沒有關(guān)系!

2.1 int和char怎么區(qū)分

int ADD(int left = 10, int right = 20) {
	return left + right;
}
char ADD(char left, char right) {
	return left + right;
}
int main() {
	cout << ADD() << endl;
	//cout << ADD(1,2) << endl;	//(1,2)字面量常量,
	//默認(rèn)給十進(jìn)制,十六進(jìn)制等等,給的整形默認(rèn)算常量
	//如果調(diào)用char
	cout << ADD('1', '2') << endl;	//char類型打印,自動(dòng)按%c,字符類型→	→	→	→	→	↓
	//傳字符才調(diào)用char類型的																↓
	//																					↓
	//char類型的字符只是顯示表面,深入剖析的話在內(nèi)存中,它存儲(chǔ)在4byte中,是它對應(yīng)的ASCII碼值	↓
	//ASCII碼值還是整形,只不過是1byte													↓
	//char類型存的值是‘49',‘50'.	←	←	←	←	←	←	←	←	←	←	←	←	←	←		
	//對應(yīng)的是c。c在ASCII碼值中是99	←	←	←	←	←	←	←	←	←	←	←	←	←	←
	return 0;
}

總結(jié):

1.char和int都是表示整形的,整形一般都是用來表示大小,只不過int是4byte,char是1byte

2.char的1byte是用來表示ASCII碼值的字母,多個(gè)字母可以表示英文,就能表示文字了

2.2 傳值

有三個(gè)值,但是缺省了一個(gè),傳的時(shí)候只傳了兩個(gè)

void lost(int a, int b, int c = 1) {
}
void lost(int a, int b) {
}
//以上構(gòu)成函數(shù)重載,函數(shù)名相同,參數(shù)或者個(gè)數(shù)不同 
int main() {
	lost(1, 2, 3);
	lost(1,2);
	//↑是編不過去的,
	return 0;
}

總結(jié):

1. 有多個(gè)重載函數(shù)“lost”實(shí)例與參數(shù)列表匹配

2. 編譯器不能識(shí)別要調(diào)用哪一個(gè)“lost”對重載函數(shù)的調(diào)用不明確

3. 構(gòu)成重載但是調(diào)用的時(shí)候埋了一個(gè)坑

到此這篇關(guān)于C++淺析函數(shù)重載是什么的文章就介紹到這了,更多相關(guān)C++函數(shù)重載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C語言中的常量指針和指針常量

    詳解C語言中的常量指針和指針常量

    這篇文章主要介紹了詳解C語言中的常量指針和指針常量,包括其之間的區(qū)別是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • C++編程中的命名空間基本知識(shí)講解

    C++編程中的命名空間基本知識(shí)講解

    這篇文章主要介紹了C++編程中的命名空間基本知識(shí)講解,包括對C++11中內(nèi)聯(lián)命名空間新特性的介紹,需要的朋友可以參考下
    2016-01-01
  • C語言面試C++字符串替換空格示例

    C語言面試C++字符串替換空格示例

    這篇文章主要介紹了C語言面試中C++字符串替換空格示例,文中給出了基本上可以拿下offer的代碼,有需要的朋友可以借鑒參考下,希望大家都能早日拿到心儀的offer
    2021-09-09
  • C++引用和指針的區(qū)別你知道嗎

    C++引用和指針的區(qū)別你知道嗎

    這篇文章主要為大家介紹了C++引用和指針的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2022-01-01
  • Opencv使用Stitcher類圖像拼接生成全景圖像

    Opencv使用Stitcher類圖像拼接生成全景圖像

    這篇文章主要為大家詳細(xì)介紹了Opencv使用Stitcher類圖像拼接生成全景圖像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr

    深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr

    內(nèi)聯(lián)函數(shù):用** inline 修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時(shí)C++編譯器會(huì)在調(diào)用的地方展開內(nèi)聯(lián)函數(shù)**,這樣調(diào)用內(nèi)聯(lián)函數(shù)就需要?jiǎng)?chuàng)建棧楨,就提高效率了,這篇文章給大家介紹C++ 內(nèi)聯(lián)函數(shù)inline|nullptr的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解

    C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解

    這篇文章主要為大家詳細(xì)介紹了C語言main()函數(shù)與命令行參數(shù)問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-04-04
  • C++超詳細(xì)講解auto與nullptr的使用

    C++超詳細(xì)講解auto與nullptr的使用

    C++11提供了nullptr用來取代0或者NULL。在C++11之前,使用NULL為空指針賦初值,但NULL其實(shí)就是0,這時(shí)會(huì)把NULL當(dāng)成0來用;在C++11中,我們在聲明一個(gè)變量或?qū)ο?,指定它的類型時(shí),可以不使用變量本身的類型而使用auto替代
    2022-05-05
  • C++虛析構(gòu)函數(shù)的使用分析

    C++虛析構(gòu)函數(shù)的使用分析

    本篇文章是對C++虛析構(gòu)函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言經(jīng)典指針筆試題詳解

    C語言經(jīng)典指針筆試題詳解

    今天博主來講解4道經(jīng)典的指針筆試題,很多朋友沒有深刻理解函數(shù)傳參知識(shí)都會(huì)在這些題目上出錯(cuò),下面話不多說,我們開始
    2021-10-10

最新評論

苗栗市| 铜鼓县| 琼海市| 连江县| 奇台县| 武强县| 安国市| 美姑县| 桐庐县| 塔河县| 铜梁县| 西华县| 鸡泽县| 庆阳市| 嘉禾县| 丰城市| 临桂县| 珲春市| 色达县| 廊坊市| 平顶山市| 自治县| 项城市| 岳阳市| 锡林浩特市| 贵德县| 合肥市| 峡江县| 海淀区| 临朐县| 临武县| 绍兴市| 兴国县| 翁牛特旗| 郑州市| 柳州市| 万山特区| 梁河县| 永昌县| 潞西市| 泊头市|