linux编程--默认参数

本文详细解析了C++中函数默认参数的概念、使用场景及其带来的优势与潜在混淆,通过具体实例展示了如何合理利用默认参数简化函数调用,并强调了在函数重载时避免滥用默认参数的重要性。

1. 如果一个函数中有多个默认参数,则形参分布中,默认参数应从右至左逐渐定义。当调用函数时,只能向左匹配参数。即默认参数右边全是默认参数。

2.默认参数可将一系列简单的重载函数合成为一个。例如, 下面3个重载函数:
    void point(int,int){//...}
    void point(int a){return point(a,4);}
    void point(){return point(3,4);}

  可以用下面的默认参数的函数来替代:
    void point(int=3,int=4);


3.

默认参数可以放在函数声明或者定义中,但只能放在二者之一

通常我们都将默认参数放在函数声明中,因为如果放在函数定义中,那么将只能在函数定义所在地文件中调用该函数。


4.

函数重载时谨慎使用默认参数值

比如下面两个重载函数func,一个只接受一个参数,而另一个接受两个参数,包括一个默认参数。

复制代码
class Test
{
public:
    int func(int a)
    {
        return a;
    }

    int func(int a, int b = 1)
    {
        return a + b;
    }
} ;
复制代码

如果像下面这样调用函数

复制代码
int main(void) 
{ 
    Test test;
    int result = test.func(1);

    getchar() ; 
    return 0 ; 
} 
复制代码

则编译器就不知道选择哪个函数,这就造成了混淆。

(1)在函数声明或定义时,直接对参数赋值。这就是默认参数;int f(paremrters);这里的参数paranters没有申明类型,就采用默认类型,(c语言中的默认类型均为int型,与设计语言结构的时候,其他类型均没有实现有关。)

(3)默认参数调用时,则遵循参数调用顺序,自左到右逐个调用。这一点要与参数申明分清楚。

(4)默认值可以是全局变量、全局常量,甚至是一个函数。但不可以是局部变量。因为默认参数的调用是在编译时确定的,而局部变量位置与默认值在编译时无法确定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值