:兩個以上的函式,具有相同的函式名,但是形參的個數或者型別不同,編譯器會根據實參型別及個數的最佳匹配來自動確定呼叫哪乙個函式。
int
add(
int x,
int y)
;float
add(
float x,
float y)
;int
add(
int x,
int y,
int z)
;float
add(
float x,
float y,
float z)
;int
main()
void
func()
//實現5+6
intadd
(int x,
int y
在給出缺省形參時應注意是否會出現歧義:
int
add(
int x,
int y)
intadd
(int x,
int y,
int z=2)
intmain()
{innt ret;
ret=
add(10,
20);//此時就出現歧義,既有可能呼叫第乙個函式,也有可能呼叫第二個函式。
return
0;
1:c++中的內聯函式既有巨集定義的優點,又克服了巨集定義的缺點。(巨集定義不會進行引數檢查)
2:在函式名前加上「inline」,即為內聯函式。inline void func(int a,int b);
3:在編譯時呼叫func的地方用函式體進行的替換,所以出現執行時會減少呼叫開銷。
注意:1、並非所有的函式都需要定義為內聯函式,一般只會將那些頻繁使用的,並且函式體較小的(只有幾條語句)函式定義為內聯函式。2、內聯函式不允許又迴圈語句和switch語句,否則按照普通函式處理。
巨集定義:#define 符號常量名 數值
類如:# define pi 3.14
area=pirr;——》area=3.14*r**r
注意:定義符號常量時,不能用賦值符 ,不能以分號結尾。
用define和用const定義符號常量的本質區別:
1、用define定義的符號常量只在編譯時完成巨集替換(簡單的字串替換),在程式執行期間不占用記憶體空間。
2、用const定義的符號常量在程式執行時佔據記憶體空間,只是用const來指明該記憶體空間的唯讀約束。
函式過載 引用 內聯函式
預設引數 在定義或者宣告乙個函式的時候,給它的形參賦上乙個預設值,呼叫這個函式的時候,如果沒有把實參傳入,函式就會使用我們指定的預設引數,如果傳入實參,就會使用傳入的引數。預設引數可分為 全預設引數 在這個函式中,給所有的形參都指定了預設值。半預設引數 在這個函式中,只給一部分的形參指定了預設值。注...
內聯函式和函式過載
內聯函式 巨集可以避免函式呼叫帶來的開銷,但存在兩個問題 1 巨集沒有作用域,沒有型別檢測,另外定義巨集時,需要時刻注意加括號,除此之外,當傳入變數自增時,會出現不可避免的錯誤。2 c 中巨集不能作為類的成員函式,因為預處理器不能訪問類成員。內聯函式主要為了替代巨集,另外,類中的成員函式預設加了in...
函式介紹(內聯函式和函式過載)
過載概念 同乙個識別符號在不同的上下文有不同的意義 函式過載 同乙個函式名定義不同的函式 當函式名和不同的引數搭配時,表達的意思也不同 由函式名和函式引數列表決定的,與返回值無關係 函式過載至少滿足以下條件 引數個數不同 引數型別不同 引數順序不同 編譯器呼叫函式過載時的原則 將所有同名函式作為候選...