函数的默认参数:
语法:
在形参后直接补上函数参数的默认值即可:
void exchange (int a = 10,int b = 20);
那么在上述函数中,如果我们不去给形参输入值,对应的形参就会用默认值参与到函数的运行中
此外,在给函数形参设定默认值时,从第一个设置了形参往后(右)所有的形参都必须设定默认值。如果我们给一个函数设定了默认值,并且又输入了一个实参,那么函数将会按照实参的值进行计算。
函数重载:
作用:可以使不同的函数体具有相同的名字,从而提高函数的复用性
条件:
1、作用域相同
2、函数的参数不能完全相同(即函数参数的类型不同,或者函数参数个数不同,或者顺序不同)
那么以下为对应例子:
参数数目不同:
参数的类型不同:
函数参数的顺序不同:
那么在上边的演示中,函数重载都常运行了,但是当重载的函数中含有默认参数,可能就会出现歧义:
比如在上图中,我们发现两个函数的参数数目不同,可以构成函数重载,但是上边的函数多出来的变量b具有默认参数。
那么当我们只给出一个参数时,两个重载函数都可以运行,我们并没有在两个函数中做出选择,而写可以看到编译器进行了报错。在使用函数重载时我们需要尽量避免出现因为默认参数而使多个重载函数同时满足条件而产生错误。
好的,那么函数的扩展就先到这里,接下来我们来学习类和对象,在C++中面向对象主要分为三类:
封装,继承和多态
首先,我们先来学习一下
封装:
首先,我们大致的说一下封装,在C++中,对象通常含有属性和行为,而封装就是把一个对象的属性和行为绑定在一起并且对其加以权限上的控制。
那么下面我们先来试着将属性和行为结合到一起:
那么封装的基本语法如下:
class 名称 { 权限 属性 行为 };
好的,那么我们举一个例子,我们来封装一个长方形类,在这个类中,长方形类具有长和宽的属性,长方形类的行为使计算自己的周长。
语法的实现如下:
那么在上面这个图片中我们可以看到这个长方形类的定义
那怎么使用这个类呢?就像结构体一样,我们只是创造了这样一个类别,但是并没有一个真正有准确长宽数据的长方形,那么我们再来尝试创造一个长方形,也就是长方形类的对象,现在我们创建一个长方形a:
通过上边的图片我们可以发现,类的定义和使用和结构体非常相似,也是直接将类的名作为数据类型,然后写一个对象名。之后我们通过符号 “ . ” 对对象中的属性和行为进行访问,并且可以输出对应的函数的结果,在这里我们的行为函数使计算长方形的周长,结果使60.
那么以上就是对函数的扩展和封装的学习。