C 複習之函式過載

2021-10-05 15:31:43 字數 1430 閱讀 9603

1.什麼是函式過載?

(1)一組函式,其中函式名相同,引數列表的個數或者型別不同。

(2)一組函式要稱得上過載,一定先是處在同乙個作用域當中。

(3)const或volatile的時候,會對形參型別有影響

例如下面兩個函式產生的符號就是相同的

void

fun(int a)

void

fun(

const int a)

而下面兩個函式產生的符號就是不相同的

void

fun(int *a)

void

fun(

const int *a)

(4)一組函式,函式名相同,引數列表也相同,僅僅是返回值不同,不叫函式過載,因為生成符號的時候和返回值沒有什麼關係。

函式過載常見面試題:請你解釋一下什麼叫做多型?

靜態(編譯時期)的多型:函式過載

動態(執行時期)的多型:

2.c++為什麼支援函式過載,c語言不支援?

c++**產生函式符號時,是由函式名+引數列表型別組成的。

c**產生函式符號的時候,由函式名來決定。

3.c++與c語言**之間如何互相呼叫?

常規狀態下,c++無法直接呼叫c語言的**。

如果要使用,可以將c函式的說明擴在"extern 『『c』』"內,意思就是告訴編譯器在生成符號時按照c語言的規則生成。例如:

extern 「c」

c語言呼叫c++的**不能使用」extern 「c++」「,extern 「c」只能被c++的編譯器識別。

c語言如果想呼叫c++**,只需要在c++原始碼擴在extern 「c」 。

只要是c++ 編譯器,都內建了_cplusplus這個巨集名。

下面的**不管是c生成還是c++生成,都可以直接呼叫

#ifdef _cplusplus

extern "c"

#ifdef _cplusplus

}#endif

函式過載例

下面提供三組函式名相同,引數列表不同的函式

#include 

using namespace std;

int compare

(int a,int b)

bool compare

(double a,double b)

bool compare

(const char *a,

const char *b)

int main()

C 之函式複習

1.函式的定義 型別說明 函式名 引數列表 乙個程式只有乙個 main 函式,main 函式可以有引數,此引數為命令列引數。函式具有返回值和返回值型別,返回用 renturn return 的作用還有乙個是結束當前的函式的執行。2.函式的呼叫 函式的呼叫形式為 型別說明符 函式名 形參表 3.函式的...

C 之 函式過載

函式的過載 函式的過載就是可以在乙個程式中使用同名的若干個函式。主要的限制是給定名稱的每個函式必須有不同的引數列表。也就是說,乙個引數列表中的引數型別與另乙個不同 不僅僅是引數名不同,實際上,如果滿足下列條件之一,兩個同名函式就是不同的 1.每個函式的引數個數不同 2.引數的個數相同,但至少有一對對...

C 之過載函式

c語言是實現不了過載的,只要兩個函式名稱相同,就會報錯,但是c 可以實現函式的過載,接下來我們看一下過載的規則。1.過載規則 1 函式名相同 2 引數的個數,型別,順序不同都可以構成過載 3 返回值型別不相同不可以構成過載 接下來我們看下具體的例子 void func int a void func...