内置函数,函数的重载,函数模板,有默认参数的函数

  1. 内置函数

用处:就是用存储空间换取时间效率。

声明:声明内置函数,要注意在函数头加上inline。(可以在声明函数和定义函数时同时写inline,也可以只在函数声明时加inline,而定义函数时不加inline)

利弊:使用内置函数可以节省运行时间,但增加了目标程序的长度,在函数规模很小的情况下,函数调用的时间开销可能相当于甚至超过执行函数本身的时间,把它定义为内置函数,可大大减少程序运行时间。

注意:内置函数中不能包括复杂的控制语句,如循环语句和switch语句。并且,即使你加了inline也不一定会运行成内置函数,计算机会自己权衡选出最佳选择。

总结:只有那些规模较小而又被频繁调用的简单函数,才适合声明为inline函数,

  1. 函数的重载

定义:函数重载,即对一个函数名重新赋予它新的含义,使一个函数名可以多用。所谓的重载,其实就是“一物多用”。(也就是一个函数名多用)

利弊:利:含义清楚,方法简单。弊:仍然要定义每个函数,没有减少代码量。

注意:参数的个数和类型可以都不同。但不能只有函数的类型不用而参数的个数和类型相同。如:

 

因此:重载函数的参数个数,参数类型或参数顺序三者中必须至少有一种不同,函数的返回值类型可以相同也可以不同。

如(参数个数不同的例子):

 

  1. 函数模板

定义:所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板。(函数体相同,参数个数相同,类型不同)

一般形式:template<typenname T>

通用函数定义

template<class T>

通用函数定义

例子:

 

总结:函数模板比函数重载更方便,程序更简洁。但应注意只适用于函数体相同,函数的参数个数相同而数据类型不同的情况,如果参数的个数不同,则不能用函数模板。

  1. 有默认参数的函数

定义:如果有多个形参可以使每个形参有一个默认值,也可以只对一部分形参指定默认值,另一部分形参不指定默认值。(但是如果形参有了默认值,实参再传进来也会被实参覆盖,所以通用性很高)

注意:实参与形参的结合是从左至右顺序进行的,第一个实参必然与第一个形参结合,第二个实参必然与第二个形参结合,所以指定默认值的参数必须放在形参表列中的最右端,否则出错。如:

 

使用默认值函数要注意的是:

如果函数的定义在函数调用之前,则应在函数定义中给出默认值。如果函数的定义在函数调用之后,则在函数调用之前需要有函数声明,此时必须在函数调用之前将默认值的信息通知编译系统。(也就是说默认值要上前面给出)

如果在声明函数时已对形参给出了默认值,而在定义函数时又对形参给出默认值,有的编译系统会给出“重复指定默认值“的报错信息。(因此最好是在前面的那一次进行有默认值就好了,不用在下一次出现再给一次默认值)

一个函数不能既作为重载函数,又作为有默认参数的函数。因为当前调用函数如果少写一个参数,系统无法判定是利用重载函数还是利用默认参数的函数,出现二义性,系统无法识别。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值