過載函式
含義:
c語言中,函式如果重名會報錯。
c++則引入了函式過載。編譯器將所有同名函式作為候選者,精確匹配實參、通過預設引數匹配實參、通過預設型別轉換匹配實參等等,尋找到正確的函式;如果匹配到不唯一或匹配不到,則編譯錯誤。
本質:
通過編譯後生成的obj檔案進行分析,可以看到同名函式在符號表中有不同的識別符號,也就是說本質上過載函式是不同的函式。
過載的條件:
1.引數個數不同
2.引數型別不同
3.引數順序不同
(另外,注意函式返回值「不」作為匹配的依據)
舉例:
int
func
(int a,
char
*b)int
func
(char
*b,int a)
intmain
(void
)
注意:
當預設引數遇上過載引數可能會出現錯誤,編譯不通過。如:
int
func
(int a,
int b,
int c=0)
intfunc
(int a,
int b)
void
main
(void
)
過載函式與指標
上面說過,函式過載的條件有:函式返回值「不」作為匹配的依據。
但是當過載函式賦值給指標時,函式返回值也作為匹配的依據了(即需要根據指標的返回值型別和引數型別進行匹配,找到正確的過載函式。)。因為c++是強型別語言,當使用指標的時候任何型別都需要嚴格匹配。
舉例1:
int
func
(int a)
intfunc
(char
*a)char
func
(int a)
typedef
int(
*pfunc)
(int a)
;void
main
(void
)
C 基礎知識(函式過載)
1 函式過載overload 概述 c 中允許出現同名函式,這種現象就叫函式過載。函式過載的目的是為了方便使用函式名。2 函式過載 2.1基本語法 實現函式過載的條件 1 同乙個作用域 2 引數個數不同 3 引數型別不同 4 引數順序不同。注 返回值不作為過載的依據。函式過載和預設引數設定一起使用時...
c 的基礎知識 函式過載
函式過載 在 c語言裡,在同檔案裡不可以有同名的函式 在c 裡可以有多個函式同名 例如我們要實現不同型別變數的 add函式 1 2 include 34 using namespace std 56 int add int a,int b 7 11 12 double add double a,do...
C 基礎知識 函式
寫在前面 在剛上大學的時候,學習各種各樣的計算機基礎知識,對我而言,剛開的時候我是不理解的,知識太抽象,只是機械的記住了概念和用法,往往忽略了一些細節。當自己實踐增多的時候,各種知識漸漸的清晰起來,所有東西都是有來龍去脈的,原來不理解的東西都豁然開朗起來。這個時候再取回顧原來學習的知識技能,又有一種...