c 基礎知識7 函式過載

2021-10-23 18:07:22 字數 1191 閱讀 1493

過載函式

含義:

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 基礎知識 函式

寫在前面 在剛上大學的時候,學習各種各樣的計算機基礎知識,對我而言,剛開的時候我是不理解的,知識太抽象,只是機械的記住了概念和用法,往往忽略了一些細節。當自己實踐增多的時候,各種知識漸漸的清晰起來,所有東西都是有來龍去脈的,原來不理解的東西都豁然開朗起來。這個時候再取回顧原來學習的知識技能,又有一種...