1.函数重载
// 函数名相同,形参类型不同,可以构成函数重载
// C++编译器对函数的处理:编译的时候将参数类型加入到函数名中形成新的函数名
// mySwapii
void mySwap(int &a, int &b) //
{
int tmp = a;
a = b;
b = tmp;
}
// mySwapdd
void mySwap(double &a, double &b)
{
double tmp = a;
a = b;
b = tmp;
}
// mySwapcc
void mySwap(char &a, char &b)
{
char tmp = a;
a = b;
b = tmp;
}
// 函数重载的规则:
// 1、参数类型不同
// 2、参数个数不同
// 3、参数的顺序不同
// 注意事项:函数的返回值不能作为重载的条件
int add(int a, int b) // addii
{
return a + b;
}
int add(int a, int b, int c) // addiii
{
return a + b + c;
}
void print(int a, char c) // printic
{
}
void print(char a, int c) // printci
{
}
// 定义一个函数指针类型, PFUNC是一个函数指针类型,不是变量
// 可以用它定义 函数指针:一个指向 有一个int 返回值, 2个int参数的函数
typedef int (*PFUNC)(int, int);
int main()
{
// 定义一个函数指针
// 用一个函数指针指向重载函数的时候,严格的匹配函数指针的类型
PFUNC pf = add;
printf ("%d\n", pf(1,2));
// printf ("%d\n", pf(1,2,3)); 函数调用的参数太多。
return 0;
}
// 函数重载和函数默认参数 使用的时候需要注意
int main2()
{
printf ("%d\n", add(1,2));
printf ("%d\n", add(1,2,3));
return 0;
}
int main1()
{
int a = 10;
int b = 20;
double d1 = 1.2;
double d2 = 3.4;
char c1 = 'A';
char c2 = 'B';
mySwap(a, b); // mySwapii
mySwap(d1,d2); // mySwapdd
mySwap(c1,c2); // mySwapcc
return 0;
}