C 中的過載

2021-07-22 04:05:57 字數 2346 閱讀 7441

函式過載:用同一函式名定義不同的函式,當函式名和不同的引數搭配時函式的含義不同。

函式過載至少滿足一下的乙個條件:

引數個數不同

引數型別不同

引數順序不同

函式的返回值不是函式過載的判斷標準

預設引數和過載在一起,會報錯,產生二義性

void

func

(inta,

intb

,intc=

0)

void

func

(inta,

intb

)

void

main

()

函式過載和函式指標在一起

//函式指標的基礎語法

//宣告乙個函式型別

int func (int a;int b)

int func (int a)

typedef

void

(mytypefunc

)(inta,

intb

);

//mytypefunc *myfunp=null; 定義乙個函式指標 這個指標指向函式的入口位址

//宣告乙個函式指標型別

typedef

void

(*myptypefunc

)(inta,

intb

);//宣告乙個函式指標的資料型別

//myptypefunc fp=null;//

//定義乙個函式指標變數

void

(*myvarpfunc

)(inta,

intb

)

void

main

()

重寫是子類的方法

覆蓋父類

的方法,要求方法名和引數都相同 過載是

在同乙個類中

的兩個或兩個以上的方法,擁有相同的方法名,但是引數卻不相同,方法體也不相同

最常見的過載的例子就是類的建構函式

下面三組定義本質是相同的,不是過載:

1

)int

sum

(int&a

);和intsum

(int

&);

2

)int

sum

(inta)

和int

sum

(const

inta

);

3

)typedef

intdd

;

intsum

(inta);

和int

sum

(dd a

);

其中第二個例子對於非引用傳參,形參是否const是等價的。但是當使用引用傳參時,有無const是不同的。使用指標傳參時,指向const物件的指標和指向非const物件的指標做形參的函式是不同的。

基於const的過載。

在類中會有這樣一種過載,它是合法的。

class

a ;

可以看到在a類中,function函式是發生過載了,而且是合法的。而且在呼叫時,只用a類的const物件才能呼叫const版本的function函式,而非const物件可以呼叫任意一種,通常非const物件呼叫不是const版本的function函式。

原因是:按照函式過載的定義,函式名相同而形參表有本質不同的函式稱為過載。在類中,由於隱含的this形參的存在,const版本的 function函式使得作為形參的this指標的型別變為指向const物件的指標,而非const版本的使得作為形參的this指標就是正常版本的指 針。此處是發生過載的本質。過載函式在最佳匹配過程中,對於const物件呼叫的就選取const版本的成員函式,而普通的物件呼叫就選取非const版 本的成員函式。

c 中的過載

c 中的過載 c 中的過載包含函式過載和運算子過載,編譯時的多型性就是由這兩種過載實現的。一 函式過載 函式過載 兩個以上的函式有相同的函式名,但是函式的形參個數或者型別不同,編譯器會根據實參與形參的型別和個數進行最佳匹配,自動決定呼叫哪乙個函式。int add int m,int n 函式呼叫前必...

c 中的過載

出現在相同作用域的二個函式如果具有相同的名字而形參不同,則稱為過載函式。在這個定義中有二個注意點 1.是在相同的作用域,如果,不在相同的作用域,即使形參不同zhe,也不算作是過載函式 比如一下的例子 void print const string s void print double d void...

C 中的函式過載

你可以重新定義或過載的大部分 c 已有的操作符。因此,程式設計師可以像使用使用者自定義型別一樣使用操作符。過載操作符是一類函式,它們就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。像任何其它函式,過載運算子也有返回型別和引數列表。box operator const box ...