真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++新增基礎功能解析—函數(shù)重載功能的使用-創(chuàng)新互聯(lián)

“函數(shù)重載”指的是可以有多個同名的函數(shù),因此 名稱進行了重載。這兩個術(shù)語指的是同一回事,但我們通常使用函數(shù)重載??梢酝ㄟ^函數(shù)重載來設計? 系列函數(shù)——它們完成相同的工作,但使用不同的參數(shù)列表。
重載函數(shù)就像是有多種含義的動詞。例如,Piggy×××可以在棒球場為家鄉(xiāng)球隊助威(root),也可以在地里種植(root)菌類作物。根據(jù)上下文可以知道在每一種情況下,root的含義是什么。同樣,C++使用上下文來確定要使用的重載函數(shù)版本。
函數(shù)重載的關(guān)鍵是函數(shù)的參數(shù)列表——也稱為函數(shù)特征標(ftmction signature).如果兩個函數(shù)的參數(shù)數(shù)目和類型相同,同時參數(shù)的排列順序也相同,則它們的特征標相同,而變量名是無關(guān)緊要的。C++允定義名稱相同的函數(shù),條件是它們的特征標不同。如果參數(shù)數(shù)目和/或參數(shù)類型不同,則特征標也不同。例如,可以定義一組原型如下的print()函數(shù):

創(chuàng)新互聯(lián)建站服務項目包括臺江網(wǎng)站建設、臺江網(wǎng)站制作、臺江網(wǎng)頁制作以及臺江網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,臺江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到臺江省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
Void print(const char * str, int width) ;   // #1
Void print(double d, int width);            // #2
Void print(long 1, int width);           // #3 
Void print(int i, int width);                // #4 frombyte
Void print(const char *str);                 // #5

使用pnnt()函數(shù)時,編譯器將根據(jù)所采取的用法使用有相應特征標的原型:

print(” Pancakes", 15);         //use #1
print(” syrup");                //use #2
print(” 1999.0,10");                //use #3
print(” 1999,12");              //use #4
print(” 1999L,15");             //use #5 frombyte.com

例如,print(“Pancakes”,15)使用一個字符串和一個整數(shù)作為參數(shù),這與#1原型匹配。 ,使用被重載的函數(shù)時,需要在函數(shù)調(diào)用中使用正確的參數(shù)類型。例如,對于下面的語句:

Unsigned int year =3210;
print (year, 6);            // ambiguous call

Print()調(diào)用與哪個原型匹配呢?它不與任阿原型匹配!沒有匹配的圓形并不會自動停止使用其中的某個函數(shù),因為C++將嘗試使用標準類型轉(zhuǎn)換強制進行匹配。如果#2原型是print()唯一的原型,則函數(shù)調(diào)用print(year,6)將把year轉(zhuǎn)換為double類型。但在上面的代碼中,有3個將數(shù)字作為第一個參數(shù)的原型,因此有3種轉(zhuǎn)換year的方式。在這種情況下,C++將拒絕這種函數(shù)調(diào)用,并將其視為錯誤。
一些看起來彼此不同的特征標是不能共存的。例如,請看下面的兩個原型:

duble cube (double x);
duble cube (double & x);

您可能認為可以在此處使用函數(shù)重載,因為它們的特征標看起來不同。然而,請從編譯器的角度來考慮這個問題。假設有下面這樣的代碼:
cout.<< cube(x);
參數(shù)X與double x原型和double &x原型都匹配,因此編譯器無法確定究竟應使用哪個原型。為避免這種混亂,編譯器在檢査函數(shù)特征標時,將把類型引用和類型本身視為同一個特征標。 匹配函數(shù)時,并不區(qū)分const和非const變量。請看下面的原型:

Void dribble(char * bits);
Void dribble (const char *cbits);
Void dabble(char * bits);
Void drivel(const char * bits);

下面列出了各種函數(shù)調(diào)用對應的原型:

Const char p1[20]="How’s the weather?";
Char p2[20]="How's business?";
Dribble(p1);        // dribble(const char *); 
Dribble(p2);        // dribble(char *);
Dabble(p1);     // no match 
Dabble(p2);     // dabble(char *);
Drivel(p1);     // drivel(const char *);frombyte.com 
Drivel(p2);     // drivel(const char *);

dribble()函數(shù)有兩個原型,一個用于const指針,另一個用于常規(guī)指針,編譯器將根據(jù)實參是否為const來決定使用哪個原型。dribble()函數(shù)只與帶非const參數(shù)的調(diào)用匹配,而drivel()函數(shù)可以與帶const或非const參數(shù)的調(diào)用匹配。drivel?和dabble()之所以在行為上有這種差別,主要是由于將非const值賦給const變量是合法的,但反之則是非法的。
請記住,是特征標,而不是函數(shù)類型使得可以對函數(shù)進行重載。例如,下面的兩個聲明是互斥的:

long gronk(int n, float m); // same signatures,
double gronk(int n, float m);   // hence not allowed

因此,C++不允許以這種方式重載gronk()。返回類型可以不同,但特征標也必須不同:

long gronk(int n; float m); // different signatures,
double gronk(float n# float m); // hence allowed

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


本文題目:C++新增基礎功能解析—函數(shù)重載功能的使用-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/dceido.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部