本篇文章继续与大家分享C++的相关知识,本次分享的内容包含了C++的缺省函数、函数重载及引用这三个方面的知识。
话不多说,让我们进入第一个正题,
缺省函数
缺省函数就在函数声明或定义的时候,给一个缺省值。它的作用是在函数调用的时候,如果不传实参,形参就会启用缺省值。我们以add这个函数作为例子:
首先,我们试着在声明给缺省值
我们再看看,在定义下给缺省值:
接下来,让我们看看我们没有指定实参下,缺省值的启用:
以上在定义或者声明给缺省值的方式都是可以的,但不能同时在定义和声明给缺省值,这样是错误的,还需要注意的是定义给的话,像我们的上面的add函数在定义给就无法调用,需要改成下面这种方式,将函数放到调用的前面。所以,建议以后使用声明给。
缺省函数的分类
我们根据缺省值的数量,将缺省函数分为两类:
第一种叫全缺省函数,也就是函数的每一个形参都给缺省值。
上图中的add函数,有两个形参,每个形参都给了一个缺省值零。
第二种叫半缺省函数,什么意思呢?我们把只给部分
形参缺省值的函数称之为半缺省函数,换而言之,就是并不是所有形参都有缺省值。
我们以fun函数为例:
这里需要注意的是缺省值要从右往左给,不能隔着给。
C++的函数在转值的时候,是从左往右给传的,也就是先传x,再传y,最后传z.
还有就是缺省值,必须是常量或者是全局变量。
好了,以上就是缺省函数的基本知识。接下来,我们来说说函数重载。
函数重载
重载,也就是具备多种含义。函数重载就是同一个函数名具备多种功能。这是C++中新引入的概念,C语言中没有。
那我们如何实现重载呢?重载又是如何实现的呢?
让我们先来看看下面图中add函数的例子
从上图可以看到我们的add函数不仅可以实现整形数的加法,还能实现浮点数的加法。这是C语言所没有的。相信善于观察的小伙伴大概能猜到函数重载的条件了,我就不卖关子了。要想实现函数重载的条件为:同名的函数的形参列表(参数个数或参数类型或类型顺序)不同。我们依次举个例子:
说到这,我们已经解决了怎么实现函数重载的问题。那为什么C++可以实现函数重载,而C语言不行呢?答案就在下面两幅图中。
这涉及到编译过程的函数名修饰原则,C语言是直接使用函数名,这就限制了它无法实现重载,如果存在多个同名函数会产生歧义,系统不知道调用谁。也就是第一幅图。而C++呢?在编译的过程不直接使用函数名,如第二幅图所示会进行一些处理,这样即使存在多个同名函数,但由于他们的参数列表的不同,编译时的函数名也不会相同,在调用的时候,也不会产生歧义。
好了,说到这,相信你对函数重载有了一个大致的认识。
接下来,我们来一同来了解一下,引用。
引用
引用是什么?通俗来说:就是给已存在的变量取别名。
那取别名有什么用呢?我们可以通过别名对引用的实体进行访问(查看数据,删除数据)
引用的使用方式如下图:类型&引用变量名=引用实体
下面我们举个例子:
引用有几个重要的特性:
1.引用必须在定义的时候初始化
2.一个变量可以有多个引用(换而言之,就是,一个人可以取多个外号)
3.引用一旦引用了实体,就不能更改了。
由于时间关系,我们引用先介绍到这,对于引用的更多使用细节,我们会在下一章继续和大家分享。
好了,到这里,本次的分享就到此结束了,不知道我有没有说明白,给予你一点点收获。如果你有所收获,别忘了给我点个赞,这是对我最好的回馈,当然你也可以在评论发表一下你的收获和心得,亦或者指出我的不足之处。如果喜欢我的分享,别忘了给我点关注噢。