C++函数重载

        我之前学习c++,主要的学习方法是看教学视频,视频里讲的,听了之后就明白了,也会跟着一步步敲代码,也能照着例子敲一些练习题,敲完之后感觉自己懂了,但是实际上,那只是自以为是而已,其实自己懂的,只是皮毛中的毛,要想正真地理解,需要结合自己知道的信息,进行深入思考,不仅知其然,更要知其所以然。

      记起来之前一个老师说的,学习c++,要站在开发c++的那帮大牛们的角度去思考问题。他们设计的每一种语法特性,不一定是最优的,但一定是有其应用场景的。拿函数的重载来说,对于开发了c++语言的开发者来讲,目的就是增加语言的灵活性,让使用c++做开发的人能够更方便快捷地设计程序,而我们作为c++的应用者,利用函数重载的特性去设计函数,满足我们在调用该函数时候的各种需求。

    举例来讲,我们设计了一个求和函数:

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

调用这个函数的时候,传入的参数的类型只能是两个int型,那如果要对两个double类型数据求和呢?当然可以再设计个函数,可以叫做sum_double(double a,double b),但这样对于设计函数的时候起函数名和调用函数的时候记函数名,都是一种负担,一种更好的解决方案就是重载,把完成一样的功能,只是参数类型或个数不同的函数命成一样的名字,调用的时候只要记住一个名字,传入参数就可以了,把区分调哪个函数的工作交给编译器帮我们完成就ok了。

    以上,理解了函数重载的应用场景,但在与其他知识结合的实际应用中,还有很多具体的问题需要明确,对于这些问题就需要长期积累了,忍不住又要背《劝学》了:不积跬步无以至千里,不积小流无以成江海,骐骥一跃,不能十步,驽马十驾,功在不舍、、、、、、——我就是驽马

    以下,对于函数重载混合其他知识在实际应用中的问题总结一些

<1>

void setAge(int age){}
void setAge(int){}

这两个函数的参数类型是一样的,只是第二个省略了而已

<2>

void setAge(int age){}
void setAge(int &age){}

这两个函数的参数数据类型不同,是重载,但是在调用的时候,如果是

int main()
{
  int age=10;
  setAge(age);
  return 0;
}

就会产生二义性,编译器不知道该调哪个setAge

int main()
{
  setAge(10);
  return 0;
}

可以调到setAge(int age),那要怎么调用到setAge(int &age)呢?(知道了再补充)

<3>

void setAge(int age)
{
}
void setAge(const int age)
{
}

这两个函数在编译时候会报错: 函数“void setAge(int)”已有主体,这里涉及到“顶层const”的概念(再总结一篇然后把地址贴到这里),顶层const不影响传入函数的对象。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值