C 函式過載

2021-06-05 21:05:54 字數 1472 閱讀 8257

1.    概述

如果兩個函式名字相同並且在相同的域中被宣告,但是參數列不同,則它們就是過載函式overloadedfunction。

1.1  過載函式條件

引數型別或引數個數不同。

返回值不同不能視為過載。

是否為常函式不能視為過載

對於普通型別引數只有const、volatile區別不能視為過載,但是如果引數是指標或 引用型別,那麼const、volatile的區別視為過載。

1.2  過載與域

過載函式集合中的全部函式都應在同乙個域中宣告,乙個宣告為區域性的函式將隱藏而不是過載乙個全域性域中宣告的函式。

最常見的例子就是繼承關係中的子類宣告和父類同名的函式,這不是過載,切記切記!

15

using

宣告和using

指示符??

using宣告、using指示符其實這兩個東西是一樣的用途。

using宣告指定域中需要引入的名字,using指示符引入整個域。

using宣告、using指標符對過載的影響

引入的名字可以進行過載。

1.3  extern 「c」和過載函式

引入的c函式也可以進行過載。但是,鏈結指示符只能指定過載函式集中的乙個函式。

2.    過載解析的三個步驟

²  確定函式呼叫考慮的過載函式的集合,確定函式呼叫中實參表的屬性。

²  從過載函式集合中選擇函式,該函式可以在給出實參個數和型別的情況下用呼叫中指定的實參進行呼叫。

²  選擇與呼叫最匹配的函式。

函式過載解析的第一步是確定對該呼叫所考慮的過載函式集合。該集合中的函式被稱為

候選函式(candidatefunction)。候選函式是與被呼叫函式同名的函式,並且在呼叫點上,它

的宣告可見。

函式過載解析的第二步是從第一步找到的候選函式中選擇乙個或多個函式,它們能夠用該呼叫中指定的實參來呼叫。因此,選出來的函式被稱為可行函式(viablefunction )。可行函式的引數個數與呼叫的實參表中的引數數目相同,或者可行函式的引數個數多一些,但是每個多出來的引數都要有相關的預設實參。對於每個可行函式,呼叫中的實參與該函式的對應的引數型別之間必須存在轉換。

函式過載解析的第三步選擇與呼叫最匹配的函式,該函式被稱為最佳可行函式

最佳可行函式是被適用於如下規則的函式:

²  應用在實參上的轉換不比呼叫其他可行函式所需的轉換差。

²  在某些實參上的轉換要比其他可行函式對該引數的轉換好。

mysql 函式過載 C 方法過載(函式過載)

在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...

C 函式 函式過載

如果同一作用域內的幾個函式名字相同但形參列表不同,我們稱之為過載函式。void print const char cp void print const int beg,const int end void print const int ia,size t size 這些函式接受的形參型別不一樣,...

C 函式過載

函式過載 overloaded function 在相同的作用域中的兩個函式,如果有相同的名字而形參表不同 注意 如果僅僅函式的返回值不同是不能實現函式過載 void func int int func int error,僅僅返回值不同是不能作為函式過載,這屬於函式重定義 形參表包括 引數的型別 ...