Fork me on GitHub

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)
{

}

 

posted @ 2020-11-08 22:42  小黑子杜  阅读(78)  评论(0编辑  收藏  举报