函数重载、函数指针、函数默认参数

函数重载

定义:

用同一个函数名定义不同的函数,当函数名和不同的参数搭配时函数的含义不同

注意事项:

         重载函数在本质上是相互独立的不同函数(静态链编)

         重载函数的函数类型是不同的

         函数返回值不能作为函数重载的依据

         函数重载是由函数名和参数列表决定的

函数重载至少满足下面的一个条件:

         参数个数不同

         参数类型不同

         参数顺序不同

代码示例:

int func(int x)
{
	return x;
}

int func(int a, int b)
{
	return a + b;
}

int func(int a,int b,int c){
    return a+b+c;
}

函数重载+函数默认参数

可能造成二义性:

代码示例:

int func(int a, int b, int c = 0)
{
	return a * b * c;
}

int func(int a, int b)
{
	return a + b;
}

如果我使用一下代码就会产生二义性,无法通过:
c = func(1, 2);
因为由于有函数默认参数的存在,func(1,2)对于调用那个函数无法确定

函数重载和函数指针结合

函数指针:

 函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码。一个函数的地址是该函数的进入点,也是调用函数的地址。函数的调用可以通过函数名,也可以通过指向函数的指针来调用。函数指针还允许将函数作为变元传递给其他函数。

定义方式:

类型 (*指针变量名)(参数列表)

代码示例:注意区分指针函数与函数指针

函数指针:
int (*p) (int i,int j);
指针函数:
int *p(int i,int j){}

函数重载与函数指针

         当使用重载函数名对函数指针进行赋值时

         根据重载规则挑选与函数指针参数列表一致的候选者

         严格匹配候选者的函数类型与函数指针的函数类型

代码示例:

int func(int a, int b)
{
	return a + b;
}
int func(char a,char b){
   return (a-'0')+(b-'0'); 
}

int (* PFUNC)(int a,int b);

int c=0;
PFUNC =func;
根据参数列表来选择执行那个函数
c=PFUNC(10,20);

后续更新:

函数重载

 

函数重写

 

函数重定义

 

 

参考博客:

https://blog.csdn.net/str999_cn/article/details/78591369

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章