溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++缺省參數(shù)與函數(shù)重載怎么使用

發(fā)布時間:2022-06-18 13:43:50 來源:億速云 閱讀:276 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了C++缺省參數(shù)與函數(shù)重載怎么使用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C++缺省參數(shù)與函數(shù)重載怎么使用文章都會有所收獲,下面我們一起來看看吧。

一、缺省參數(shù)

缺省參數(shù)形象來說就是"備胎"。

1.1缺省參數(shù)概念

缺省參數(shù)是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個默認(rèn)值。在調(diào)用該函數(shù)時,如果沒有指定實(shí)參則采用該默認(rèn)值,否則使用指定的實(shí)參。

#include<iostream>
void P(int a = 3)
{
	printf("%d", a);
}
int main()
{
	P();//打印默認(rèn)值  3
	P(1);//打印傳送的值  1
	return 0;
}

1.2缺省參數(shù)分類

1.全缺省參數(shù)

void P(int a = 3,int c = 1,int b = 2)
{
	printf("%d", a);
	printf("%d", b);
	printf("%d", c);
}

二、函數(shù)重載

2.1函數(shù)重載概念

函數(shù)重載:是函數(shù)的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名函數(shù),這些同名函數(shù)的形參列表(參數(shù)個數(shù) 或 類型 或 順序)必須不同,常用來處理實(shí)現(xiàn)功能類似數(shù)據(jù)類型不同的問題

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 main()
{
Add(10, 20);
Add(10.0, 20.0);
Add(10L, 20L);
return 0;
}

觀察上方的函數(shù),我們會發(fā)現(xiàn)他們的函數(shù)名相同,參數(shù)不同(參數(shù)類型,參數(shù)順序等)只有滿足上述條件就可以進(jìn)行函數(shù)重載
注意:返回類型的不同的函數(shù)并不能進(jìn)行函數(shù)重載!

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

這就是錯誤的函數(shù)重載

2.2名字修飾

這里我們思考個問題,為什么C++支持函數(shù)重載而C語言卻不支持呢?

在C/C++中,一個程序要運(yùn)行起來,需要經(jīng)歷以下幾個階段:預(yù)處理、編譯、匯編、鏈接

1.實(shí)際我們的項(xiàng)目通常是由多個頭文件和多個源文件構(gòu)成,例如在(t.cpp中調(diào)用了f.cpp中的函數(shù)add)時,在鏈接前,t.o文件都沒有f.o中的add函數(shù)地址,

2.所以鏈接階段就是為了解決這個問題的,鏈接器看到t.o調(diào)用add,但是沒有add的地址,就會到f.o的符號表中找add的地址,然后鏈接到一起。

3.在鏈接時,每個編譯器的函數(shù)名修改規(guī)則的不一樣,就有可能導(dǎo)致鏈接的不同,如在gcc的編譯器下的函數(shù)修飾后名字不變。而g++的函數(shù)修飾后變成【_Z+函數(shù)長度+函數(shù)名+類型首字母】。

4.C++支持函數(shù)重載而C卻不支持函數(shù)重載的原因是:C語言同函數(shù)名時無法區(qū)分,而C++可以同過函數(shù)參數(shù)的不同來區(qū)別同名的函數(shù)!

關(guān)于“C++缺省參數(shù)與函數(shù)重載怎么使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“C++缺省參數(shù)與函數(shù)重載怎么使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI