当函数重载遇到函数默认值、函数指针

来源:互联网 发布:fanuc编程 编辑:程序博客网 时间:2024/06/05 07:17

当函数重载遇到函数默认值、函数指针

一、当函数重载遇到函数默认值:
当我们的重载函数遇到函数有默认值的情况,编译器还能不能正确的做出合理的判断,下面我们通过实验来给出答案,下面是两个非常简单的重载函数,但跟普通的重载不同的是我们的第二个函数的参数列表给出了默认值:

void fun(int i, int j){    cout << "fun(i,j) = " <<  i << endl;}void fun(int i, int j , int k = 0){    cout << "fun(i,j,k) = " << i << endl;}

紧接着是我们的main函数:

int main(void){    //fun(1, 2);    fun(1, 2, 3);    cout << "Please input any key to continue... ..." << endl;    getchar();    return 0;}

1、当我们第一次调用fun(1,2)的时候,编译器直接报错,报错信息如下图:
这里写图片描述
编译器明确指出了当执行该调用的时候,我们的编译器发现上面的两个重载函数都是可以符合条件的可调用函数,产生二义性,这时候我们的编译器就不知道具体要调用哪一个函数,所以这时候编译会出错!

2、当我们第二次调用fun(1,2,3)的时候,编译成功,并正确执行,执行信息如下图:
这里写图片描述
结果显示,第二次调用重载函数编译器能够具体到哪个重载函数,从而正确执行!

3、应对方法:当我们在编写程序代码的时候,尽量避免这种二义性的代码编写方式!

二、当函数重载遇到函数指针:
首先我们定义了自己的重载函数,同时也定义了自己的函数指针,当我们将函数指针与重载函数建立起了联系并通过函数指针来调用重载函数的时候,会发生怎样的情况,下面我们将通过实验来给出答案:

首先我们定义两个重载函数,并声明一个函数指针:

void myfunc( int a, int b)  {      cout<<"this is myfunc(int a, int b)"<<endl;  }void myfunc( double a, double b)  {      cout<<"this is myfunc(double a, double b)"<<endl;  }typedef void (*myFunPtr)(double a, double b);

紧接着使我们的main函数:

int main()  {      myFunPtr ptr = NULL;    ptr = myfunc;//在这里大家可能会疑问,通过函数指针调用的函数没有参数列表怎么发生重载的呢?    ptr( 1.0, 2.0);//其实函数重载在这里才会真正的发生,由于函数指针本身就有确定的类型,所以这里会执行严格的类型检查;    printf("Press any key to continue... ...");    getchar();    return 0;  }  

1、编译并执行看结果如下图:

这里写图片描述
从运行结果看出,编译器正确找到了具体的重载函数并执行,这是因为函数指针自己本身就有确定的类型,
在调用的时候会执行严格的类型检查;

以上是简单介绍写代码过程中当函数重载遇到默认函数参数或者函数重载遇到函数指针时候的情况,希望对大家有帮助!——Powered By Anonymous–V.

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 割手腕图片带血 手腕骨头突出 手腕骨折后怎样恢复得快 手腕子一用劲筋就疼 手腕流血真实照片清晰 手腕处有个骨头突出 手腕纹身图片 手腕 钓人的鱼 女生手腕纹身图片 手腕扭伤如何恢复 手腕腱鞘炎症状 手腕腱鞘炎怎么办 手腕扭伤了怎么办 手腕痒是怎么回事 手腕肌腱炎怎么办 手腕筋疼是怎么回事 手腕扭伤挂什么科 手腕肌腱炎的症状 摔倒手腕扭伤怎么办 手腕轻微扭伤怎么办 手腕上长了个疙瘩 手腕腱鞘炎的症状 手腕没劲怎么回事 手腕长骨刺怎么办 手腕关节疼是怎么回事 手腕关节炎的症状 手腕脚腕疼是怎么回事 手腕扭到了怎么办 手腕得了腱鞘炎怎么办 手腕腱鞘炎挂什么科 手腕脚腕疼怎么回事 手腕手指关节疼痛 手腕疼痛挂什么科 手腕腱鞘炎症状图片 手腕扭着了怎么办 手腕上长了个骨刺 手腕腱鞘炎看什么科 左手手腕疼是怎么回事 怎么练习手腕力量 手腕发麻是什么原因 手腕腱鞘炎吃什么药