C++(函数参数的扩展---第7课)

1.函数参数的默认值

C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有提供参数的值,则使用默认值。

如果再函数定义也提供一个不同的默认值。 

#include <stdio.h>
int mul(int x = 0);
int main(int argc, char *argv[])
{
    printf("%d\n", mul());
    printf("%d\n", mul(-1));
    printf("%d\n", mul(2));
    
    return 0;
}
int mul(int x)
{
    return x * x;
}
运行结果
0
1
4

 小结:以上程序在c的编译器是报错的,这正表明了c++在默认参数的优化;

           如果在函数定义的时候也给出了参数的默认值,那么c++编译器也会报错,所以我们只是需要早函数申明的时候说明就可以了。(并且只能是在申明的时候给出初始默认值

2.函数默认参数的规则

函数调用时使用了默认值,则后续参数必须使用默认值(调用,匹配从左向右)

         

 实例

#include <stdio.h>
int add(int x, int y = 0, int z = 0);
int main(int argc, char *argv[])
{
    printf("%d\n", add(1));
    printf("%d\n", add(1, 2));
    printf("%d\n", add(1, 2, 3));
    
    return 0;
}
int add(int x, int y, int z)
{
    return x + y + z;
}
运行结果
1
3
6

              

         下图是实现只给y提供默认值,y只能放在最后。(第一张图报错了,原因是因为咋们申明的时候对第三个参数赋值,调用的时候自然要为前面的都赋值了。)

3.函数占位参数

 

在C++中可以为函数提供占位参数
占位参数只有参数类型声明,而没有参数名声明
一般情况下,在函数体内部无法使用占位参数

            

 

   

    

小结:c语言会给默认参数(这样做是不规范的),所以上图是不等价的。而c++中是等价的。(在之前有讲过)。所以占位参数就是这样使用的。

             

看看怎么解决如下的问题。

看看c的效果:

#include <stdio.h>
void func()
{
}
int main(int argc, char *argv[])
{
    func();    
    func(1,2);
    return 0;
}

看看c++的效果: 

#include <stdio.h>
void func(int = 0, int = 0 )
{
}
int main(int argc, char *argv[])
{
    func();    
    func(1,2);
    return 0;
}

小结:结合默认值和默认参数的使用。(就是为了便利于c到c++的移植。)

 

小结
C++中支持函数参数的默认值
如果函数调用时没有提供参数值,则使用默认值
参数的默认值必须从右向左提供
函数调用时使用了默认值,则后续参数必须使用默认值
C++中支持占位参数,用于兼容C语言中的不规范写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值