C 支援函式過載,C語言不支援函式過載的原因

2021-09-12 19:32:01 字數 573 閱讀 4050

c++支援函式過載,c語言不支援函式過載的原因?

函式過載:在同一作用域內,一組具有不同引數列表的同名函式。通常情況,這組函式具有相似的功能,函式過載有效解決了只由於引數型別不同而造成的函式名數量膨脹問題。

而c++支援函式過載,c不支援函式過載的原因是:c++在編譯過程中對函式的重新命名規則是:函式名+引數型別(有時候還有作用域、返回型別),因此使得過載函式在重新命名後函式名具有唯一性,而c語言在編譯過程中的命名規則是:_函式名,這將使得函式名沒有唯一性,無法區分,因此c++支援函式過載,c不支援函式過載。

需要注意的是:引數本身是不是const對函式過載沒有影響,影響的引數指向的型別。

如以下這兩對都不是函式過載:

a:int cal(int a, int b); int cal(int const a, int const b);

b:int cal(int* a, int*b);int cal(int* const a, int* const b);

而以下這一對是函式過載:

a:int cal(int* a,int* b);int cal(const int* a, const int* b)

為什麼C 支援函式過載而C語言不支援?

gcc和g 編譯的過程類似,細節處理不一樣 list.h list.c test.c 1.預處理 標頭檔案的展開 巨集替換 條件編譯 去掉注釋 list.i test.i 2.編譯 檢查語法錯誤 生成彙編 list.s test.s 3.彙編 將彙編 轉換成對應的機器 list.o test.o 4...

C 為什麼C 支援函式過載而C語言不支援

double add double left,double right long add long left,long right 例如上面的 add函式的函式名字重複,但引數不同 包括引數的個數 型別不同 的函式。這種情況在c語言的編譯中是不通過的,但c 卻可以。接下來我們來講解原因 實際我們的專...

為什麼C 支援函式過載,而C語言不支援函式過載?

函式過載 c 允許在同一作用域中宣告幾個功能類似的同名函式,這些同名函式的形參列表 引數個數 或 型別 或 順序 必須不同,常用來處理實現功能類似資料型別不同的問題。c c 中程式執行起來,需要經歷一下幾個階段 在鏈結時,面對add函式,func函式,每個編譯器都有自己的函式名修飾規則。聯結器會使用...