欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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++ 中動(dòng)態(tài)鏈接庫--導(dǎo)入和導(dǎo)出的實(shí)例詳解

    C++ 中動(dòng)態(tài)鏈接庫--導(dǎo)入和導(dǎo)出的實(shí)例詳解

    這篇文章主要介紹了C++ 中動(dòng)態(tài)鏈接庫--導(dǎo)入和導(dǎo)出的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 詳解C語言中的自定義類型

    詳解C語言中的自定義類型

    這篇文章主要為大家詳細(xì)介紹了C語言中的四大自定義類型(結(jié)構(gòu)體、位段、枚舉和聯(lián)合)的相關(guān)知識(shí),文中的示例代碼簡潔易懂,需要的可以參考一下
    2023-07-07
  • 匯編語言常見錯(cuò)誤信息中文注解

    匯編語言常見錯(cuò)誤信息中文注解

    這篇文章主要介紹了匯編語言常見錯(cuò)誤信息中文注解,本文收集大部分匯編中常見錯(cuò)誤信息及對應(yīng)的中文注解,需要的朋友可以參考下
    2014-09-09
  • c++11封裝thread庫的方法示例

    c++11封裝thread庫的方法示例

    C++11 ,封裝了thread的多線程的類,這樣對多線程的使用更加方便。下面這篇文章主要給大家介紹了關(guān)于c++11封裝thread庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2019-01-01
  • C語言深入分析整形數(shù)據(jù)存儲(chǔ)

    C語言深入分析整形數(shù)據(jù)存儲(chǔ)

    C語言中,我們經(jīng)常使用數(shù)據(jù)類型,那么整形數(shù)據(jù)在內(nèi)存中如何存儲(chǔ)?存儲(chǔ)方式是什么?如果你對這些內(nèi)容不太了解的話,相信看完這篇博客后,你會(huì)對整形數(shù)據(jù)的存儲(chǔ)有一個(gè)新的認(rèn)識(shí)。話不多說,我們進(jìn)入正題
    2022-08-08
  • 使用kendynet構(gòu)建異步redis訪問服務(wù)

    使用kendynet構(gòu)建異步redis訪問服務(wù)

    這篇文章主要介紹了在kendynet上寫的一個(gè)簡單的redis異步訪問接口,大家參考使用吧
    2014-01-01
  • C++的靜態(tài)聯(lián)編和動(dòng)態(tài)聯(lián)編

    C++的靜態(tài)聯(lián)編和動(dòng)態(tài)聯(lián)編

    本文闡述了靜態(tài)聯(lián)編和動(dòng)態(tài)聯(lián)編的概念和區(qū)別,通過具體實(shí)例分析了實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編的條件,指出了虛函數(shù)是實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編的基礎(chǔ)。
    2016-03-03
  • C語言中pthread_exit和pehread_join的使用

    C語言中pthread_exit和pehread_join的使用

    pthread_exit用于強(qiáng)制退出一個(gè)線程,pthread_join用于阻塞等待線程退出,獲取線程退出狀態(tài),本文主要介紹了C語言中pthread_exit和pehread_join函數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • C++ 數(shù)據(jù)結(jié)構(gòu)之對稱矩陣及稀疏矩陣的壓縮存儲(chǔ)

    C++ 數(shù)據(jù)結(jié)構(gòu)之對稱矩陣及稀疏矩陣的壓縮存儲(chǔ)

    這篇文章主要介紹了C++ 數(shù)據(jù)結(jié)構(gòu)之對稱矩陣及稀疏矩陣的壓縮存儲(chǔ)的相關(guān)資料,這里實(shí)現(xiàn)稀疏矩陣和對稱矩陣的壓縮存儲(chǔ)的實(shí)例,需要的朋友可以參考下
    2017-08-08
  • C++常對象精講_const關(guān)鍵字的用法

    C++常對象精講_const關(guān)鍵字的用法

    用const修飾的聲明數(shù)據(jù)成員稱為常數(shù)據(jù)成員。變量或?qū)ο蟊?const修飾后其值不能被更新。因此被const修飾的變量或?qū)ο蟊仨氁M(jìn)行初始化
    2013-10-10

最新評論