C語言是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。下面是小編分享的C/C++函數重載與缺省參數,一起來看一下吧。
函數重載
函數多態是C++在C語言的基礎上新增的功能,默認參數讓你能夠使用不同數目的參數調用同一個函數,而函數多態(函數重載)讓你能夠使用多個同名的函數。“多態”指的是有多種形式因此函數多態允許函數可以有多種形式,類似的術語“函數重載”指的是可以有多個同名的函數,因此對名稱進行了重載,它們兩個看起來是同一回事,但我們會通常使用函數重載,可以通過函數重載來設計一系列的函數,它們完成相同的工作,但使用不同的參數列表。
重載函數就像是有多鍾含義的動詞。函數重載的關鍵是函數的參數列表(也稱爲函數特徵標【function 、signature】)。如果兩個函數的參數數目和類型相同,同時參數的排列順序也相同,則它們的特徵標相同,而變量名是無關緊要的。C++允許定義名稱相同的函數,條件是它們的特徵標不同,如果參數數目和/或參數類型不同,則特徵標也不同。
我們從代碼裏面看下:
////C C++
////c語言:面向過程的語言,嚴格的先後順序,便於理解
////c++語言:面向對象的語言,先後順序沒有那麼嚴格
//
////C++是C的升級
////C++比C語言多了兩個關鍵的'知識,1、類和對象;2、模板
//
////函數重載
////對於相同(相似)的函數行爲,用一個函數名進行管理
////一個函數名管理多個函數體
////構成函數重載的條件:函數名必須一致,參數列表不一致
////參數列表不一致:1、參數列表的個數不一致;2、參數對應位置的類型不一致
//
//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;
// = + ;
// = + ;
// return tempPos;
//}
//
//void main()
//{
// printf("%f",myAdd(1.3,2.89));
// printf("%d", myAdd(1, 2));
//
//}
//函數的缺省參數
//在函數定義的時候,給形參給出初始值。
//當函數調用時,就可以不用再給實參,默認使用初始值
//函數調用給出實參,會用實參去替換掉默認的初始值
//缺省參數只能由後往前缺省
//缺省參數和函數重載組合會產生二義性
//缺省參數聲明和定義分開
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;//兩個變量是通過一段流程語句來的
//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;
}