基本概念
在C++中允許使用函數(shù)重載(函數(shù)多態(tài))伏伐。簡(jiǎn)單來(lái)說(shuō)函數(shù)重載類似于我們平時(shí)所說(shuō)的多義詞矛双。既能夠使用多個(gè)同名函數(shù),只要他們擁有不同的特征標(biāo)(指函數(shù)的參數(shù)列表定踱,包括參數(shù)數(shù)目筷狼、類型和排列順序)瓶籽。通過(guò)函數(shù)重載可以用使用同一個(gè)函數(shù)名來(lái)實(shí)現(xiàn)多個(gè)功能。
下面列舉幾種可以使用函數(shù)重載的情況
eg0:
void print(int x);
void print(const int x);//可以重載
void print(long x); //可以重載桑逝,因?yàn)閰?shù)類型不同
void print(int x,char y);//可以重載棘劣,因?yàn)閰?shù)數(shù)目不同
void print(char x,int y);//可以重載俏让,因?yàn)閰?shù)順序不同
不能對(duì)函數(shù)進(jìn)行重載的情況
eg1:
void print(int x);
void print(int & x);//類型引用和原類型視為同一個(gè)特征標(biāo)楞遏,因此不能對(duì)函數(shù)進(jìn)行重載
eg2:
int print(int x);
long print(int x);//返回類型不同,特征標(biāo)相同首昔,不能對(duì)函數(shù)進(jìn)行重載
編譯器對(duì)函數(shù)原型的選擇
對(duì)于以下三個(gè)函數(shù)原型
void print(short x);//函數(shù)1
void print(long x);//函數(shù)2
void print(int x,char y);//函數(shù)3
使用重載函數(shù)時(shí)寡喝,編譯器根據(jù)傳遞給函數(shù)的參數(shù)來(lái)決定調(diào)用哪個(gè)函數(shù)原型。
print(1);//調(diào)用函數(shù)1
print(long(2));//調(diào)用函數(shù)2
print(3,'x');//調(diào)用函數(shù)3
如果出現(xiàn)參數(shù)和所有函數(shù)原型都不匹配的情況勒奇,會(huì)在不引起混亂的情況下進(jìn)行強(qiáng)制轉(zhuǎn)換
print(char 'x',char y);//調(diào)用函數(shù)3
如果有多種轉(zhuǎn)換方式對(duì)傳入的參數(shù)可以使用预鬓,將會(huì)引起混亂,在這種情況下編譯將報(bào)錯(cuò)
print(char x);//錯(cuò)誤赊颠,編譯器無(wú)法判斷將調(diào)用函數(shù)1還是函數(shù)2