05C++的函数
05C++的函数
1、形参列表处理
C++支持提供默认参数调用的机制, 所以在调用的过程中,可以不填写,可以填写一个参数,填写多个参数
int max(int a = 5, int b = 10) { return a; } int main() { max(); max(3); max(5, 100); return 0; }
上面的代码在C语言中编译会不通过,不支持默认参数的机制
默认参数的机制,只能从右往左定义给默认值,不能从左往右
2、函数重载机制
C++中可以支持多个同名函数的存在,
但必须保证函数的参数列表(函数的参数个数不同,函数的参数类型不同)不同
某些调用环境之下,比如const并不会改变其参数的类型,此时定义的不是重载函数,而是重复函数
如果采取了默认参数的处理,其实一定条件下,就相当于是做了合并重载的概念,
如果此时再定义函数参数列表不同的重载方法,就导致函数的重复
重复(二义性,不知道调用哪个函数,重复定义,同种函数定义了两次)
仅函数的返回值不同,并不会完成重载的操作
其实是为了解决:函数的调用过程中,编写多个函数,为了面向对象当中的多态做努力
在该过程中,如果能将函数的定义也进行优化,那就很好了,怎么优化呢?
使用面向对象的升级思想:泛型与模板当中的函数模板完成
int mymax(int a, int b) { return a; } int mymax(int a) { } double mymax(double a) { } double mymax(int &a) { } // const并不会影响参数类型,下面这个属于重复定义 double mymax(const double a) { }
知行合一,
翻万卷书,游千里路,会百家才