C和C 區別 函式過載

2021-08-30 21:42:06 字數 1033 閱讀 3873

一、從編譯鏈結的角度考慮函式在c和c++中的區別

1、c語言中函式生成的符號依靠函式名,所以不允許函式名相同,如果兩個函式名相同的函式在同乙個檔案中,那麼在編譯的時候就會生成兩個相同的符號,將這兩個相同的符號儲存在符號表中,那麼我們在鏈結的時候到底使用哪乙個呢?所以不允許函式名相同

2、在c++中,函式生成符號依靠的是函式名+引數列表,所以在函式名相同,引數列表不相同的情況下可以過載。

二、函式過載

1、c++中允許功能相近的函式在相同的作用域內以相同函式名宣告,從而形成過載

2、函式過載是c++多型性的乙個重要機制,它是由靜態多型性機制來實現的,也就是說這種多型性是在編譯階段實現的多型性

三、過載條件

1、函式名必須相同

2、過載函式的形參必須不同(引數個數不同或引數型別不同)

3、處於同一作用域

函式的返回值型別可以相同也可以不同

四、注意事項

1、編譯程式將根據實參和形參的型別以及個數的最佳匹配來選擇呼叫哪乙個函式

2、編譯器不以形參名來區分也不以返回值來區分函式的過載

//不以形參名來區分函式過載

int add(int a, int b);

int add(int x, int y);

//不以返回值來區分函式的過載

int add(int x, int y);

void add(int x, int y);

3、不要將不同功能的函式宣告為過載函式,以免出現呼叫結果的誤解、混淆

五、檢視型別

C和C 區別1 函式過載

什麼是過載?在同乙個作用域中,如果有多個函式的名字相同,但是形參列表不同 引數型別不同或引數個數不同 返回值型別可同也可不同,我們稱之為過載函式。過載的函式是通過形參列表區分的,與返回值型別無關。函式過載其實是 乙個名字,多種用法 的思想,不僅函式可以過載,運算子也可以過載。一 c語言和c 語言函式...

C和C 的區別 04 函式過載

函式過載 overload 用同一函式名定義不同的函式,當函式名和不同引數搭配時函式的意義不同。也就是說,函式過載就是,名字一樣,引數不同。引數不同有三種 個數不同 型別不同 順序不同。形參的名字和返回值相不相同無所謂。來看看編譯器呼叫過載函式的準則 看不懂或者覺得暈可以不看 函式過載的注意事項 i...

C 函式過載和函式覆蓋的區別

overload 翻譯過來就是 超載,過載,過載,超出標準負荷 override 翻譯過來是 重置,覆蓋,使原來的失去效果。先來說說過載的含義,在日常生活中我們經常要清洗一些東西,比如洗車 洗衣服。儘管我們說話的時候並沒有明確地說用 洗車的方式來洗車,或者用洗衣服的方式來洗一件衣服,但是誰也不會用洗...