- 相關(guān)推薦
C/C++函數(shù)重載與缺省參數(shù)
C語言是把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來的工作單元。下面是小編分享的C/C++函數(shù)重載與缺省參數(shù),一起來看一下吧。
函數(shù)重載
函數(shù)多態(tài)是C++在C語言的基礎(chǔ)上新增的功能,默認(rèn)參數(shù)讓你能夠使用不同數(shù)目的參數(shù)調(diào)用同一個(gè)函數(shù),而函數(shù)多態(tài)(函數(shù)重載)讓你能夠使用多個(gè)同名的函數(shù)。“多態(tài)”指的是有多種形式因此函數(shù)多態(tài)允許函數(shù)可以有多種形式,類似的術(shù)語“函數(shù)重載”指的是可以有多個(gè)同名的函數(shù),因此對(duì)名稱進(jìn)行了重載,它們兩個(gè)看起來是同一回事,但我們會(huì)通常使用函數(shù)重載,可以通過函數(shù)重載來設(shè)計(jì)一系列的函數(shù),它們完成相同的工作,但使用不同的參數(shù)列表。
重載函數(shù)就像是有多鐘含義的動(dòng)詞。函數(shù)重載的關(guān)鍵是函數(shù)的參數(shù)列表(也稱為函數(shù)特征標(biāo)【function 、signature】)。如果兩個(gè)函數(shù)的參數(shù)數(shù)目和類型相同,同時(shí)參數(shù)的排列順序也相同,則它們的特征標(biāo)相同,而變量名是無關(guān)緊要的。C++允許定義名稱相同的函數(shù),條件是它們的特征標(biāo)不同,如果參數(shù)數(shù)目和/或參數(shù)類型不同,則特征標(biāo)也不同。
我們從代碼里面看下:
////C C++
////c語言:面向過程的語言,嚴(yán)格的先后順序,便于理解
////c++語言:面向?qū)ο蟮恼Z言,先后順序沒有那么嚴(yán)格
//
////C++是C的升級(jí)
////C++比C語言多了兩個(gè)關(guān)鍵的知識(shí),1、類和對(duì)象;2、模板
//
////函數(shù)重載
////對(duì)于相同(相似)的函數(shù)行為,用一個(gè)函數(shù)名進(jìn)行管理
////一個(gè)函數(shù)名管理多個(gè)函數(shù)體
////構(gòu)成函數(shù)重載的條件:函數(shù)名必須一致,參數(shù)列表不一致
////參數(shù)列表不一致:1、參數(shù)列表的個(gè)數(shù)不一致;2、參數(shù)對(duì)應(yīng)位置的類型不一致
//
//struct MyPoint
//{
// int row, col;
//};
//
////int MyDev(int a, int b)
////{
//// return a / b;
////}
////
////char MyDev(int c, int d)
////{
//// return c / d;
////}
//
//int MyMul(int a, char c)
//{
// return a * c;
//}
//
//int MyMul(char c, int a)
//{
// return a * c;
//}
//
//int myAdd(int a, int b, int c)
//{
// return a + b + c;
//}
//
//int myAdd(int a, int b)
//{
// return a + b;
//}
//
//double myAdd(double a, double b)
//{
// return a + b;
//}
//
//MyPoint myAdd(MyPoint a, MyPoint b)
//{
// MyPoint tempPos;
// tempPos.row = a.row + b.row;
// tempPos.col = a.col + b.col;
// return tempPos;
//}
//
//void main()
//{
// printf("%f ",myAdd(1.3,2.89));
// printf("%d ", myAdd(1, 2));
//
//}
//函數(shù)的缺省參數(shù)
//在函數(shù)定義的時(shí)候,給形參給出初始值。
//當(dāng)函數(shù)調(diào)用時(shí),就可以不用再給實(shí)參,默認(rèn)使用初始值
//函數(shù)調(diào)用給出實(shí)參,會(huì)用實(shí)參去替換掉默認(rèn)的初始值
//缺省參數(shù)只能由后往前缺省
//缺省參數(shù)和函數(shù)重載組合會(huì)產(chǎn)生二義性
//缺省參數(shù)聲明和定義分開
int myMul(int a = 1, int b = 4);
//int MyAdd(int a, int b)
//{
// return a + b;
//}
//
//int MyAdd(int a, int b, int c = 1)
//{
// return a + b + c;
//}
void mySwap(int a, int b)
{
int c = a;
a = b;
b = c;
}
void main()
{
int num1 = 10;
int num2 = 20;//兩個(gè)變量是通過一段流程語句來的
//printf("%d ", MyAdd(num1, num2));
//printf("%d ", MyAdd());
mySwap(num1, num2);
printf("num1 = %d num2 = %d ", num1, num2);
}
int myMul(int a, int b)
{
return a * b;
}
【C/C++函數(shù)重載與缺省參數(shù)】相關(guān)文章:
C++函數(shù)考點(diǎn)歸納09-30
C++如何調(diào)用matlab函數(shù)06-29
C語言函數(shù)調(diào)用與參數(shù)傳遞08-05
Java程序調(diào)用C/C++語言函數(shù)的方法07-31
c和c++中實(shí)現(xiàn)函數(shù)回調(diào)的方法08-30