C 函式的過載

2021-10-09 04:12:21 字數 2608 閱讀 8681

函式的過載簡要的來說,便是乙個作用域和三個不同,即同一作用域內的一組函式的函式名相同,引數列表不同,引數個數不同和引數型別不同(函式的返回值可同可不同)

過載函式通常用來在同乙個作用域內用同乙個函式名,命名一組功能相似的函式,這樣做減少了函式名的數量,避免了命名空間的汙染,對於程式的可讀性有很大的好處

多型:用同乙個東西表示不同的形態

多型分為: 靜態多型(編譯時的多型)和動態多型(執行時的多型)

而函式過載是一種靜態多型

編譯器在編譯.cpp檔案的過程中使用作用域裡的同名函式時,會自動根據函式形參的型別和順序會對函式進行重新命名(不同的編譯器在編譯時對函式的重新命名標準不一樣),但是總的來說,他們都把檔案中的同乙個函式名進行了重新命名

在vs編譯器中:根據返回值型別(不起決定性作用)+形參型別和順序(起決定性作用)的規則重新命名並記錄在map檔案中

過載不是乙個真正的物件導向特徵,他只是可以簡化程式設計工作的一種方案,而簡化工作正是c++語言的全部追求,對函式進行過載的目的就是方便對不同資料型別進行同樣處理簡化程式設計工作和提高**的可讀性

案例一 利用過載函式 中 函式引數個數的不同 用同名函式 對不同的形引數目進行區別計算

設定函式並賦予不同的形參數量 進行 函式的過載

過載函式們的具體功能編譯

執行結果

來自

c++函式過載機制實現原理?

案例一 同一函式 不同形參型別之間 進行函式過載

#include

using

namespace std;

void

converttemperature

(double tempin,

char typein)

;int

main()

void

converttemperature

(double tempin,

char typein)

if(tempout !=

'e')

else

}void

converttemperature

(int tempinint,

char typein)

if(tempout !=

'e')

else

}

案例二 利用過載函式 中 函式引數個數的不同 用同名函式 對不同的形引數目進行區別計算

#include

using

namespace std;

//todo當同一函式名的引數個數出現不同 需要根據引數個數的不同進行函式宣告 (如果引數個數沒變 僅是引數型別出現變換 則只需要宣告一次函式)

void

converttemperature

(float num1)

;void

converttemperature

(float num1,

float num2)

;void

converttemperature

(float num1,

float num2,

float num3)

;int

main()

if(num1 !=

0&& num2 !=

0&&num3==0)

if(num1 !=

0&& num2 !=

0&& num3 !=0)

}return0;

}void

converttemperature

(float num1)

void

converttemperature

(float num1,

float num2)

void

converttemperature

(float num1,

float num2,

float num3)

mysql 函式過載 C 方法過載(函式過載)

在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...

c 函式的過載

函式過載的實質 用同樣的名字再定義一次乙個有著不同引數但有著同樣用途的函式。可以是引數個數不同,也可以是引數型別不同。過載不是物件導向特徵 函式的過載 對函式 方法 進行過載要謹慎 過載函式越多,該程式就越不容易看懂 注意區分過載和覆蓋 我們只能通過不同的引數過載,不能通過不同的返回值 對函式過載的...

C 函式的過載

函式過載基本就是同名函式不同功用,可以提高 的重用性。在同一作用域下 如果不在同一作用域下會呼叫優先順序高的函式 函式名相同 不相同咋過載。引數個數 型別 順序不同 就靠這個判斷呼叫哪個函式 void func void func int x intmain 輸出func 1 func 2 c 通過...