C++学习笔记之默认实参

  • 默认实参的例子

//所有形参有默认值
int fun(int a=1,int b=2,int c=3)
{
    return a+b+c;
}
//部分形参有默认值
int fun(int a,int b=2,int c=3)
{
    return a+b+c;
}
可以所有函数形参都赋予默认值,也可以只部分赋予,但是,一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认值。

  • 默认实参的声明及初始化

一般来说,函数只声明一次,但实际上函数多次声明是合法的,要注意的是,在某个作用域中一个形参只能被赋予一次默认实参。函数的后续声明只能为之前没有默认值的形参添加默认实参,而且如上面所述,该形参右侧所有形参都要有默认值。

int fun(int a,int b,int c=1);
int fun(int a,int b,int c=1);//错误,重复声明
int fun(int a,int b,int c=2);//错误,重复声明
int fun(int a,int b=2,int c);//正确,添加默认实参

//实际上是声明了一个函数:
int fun(int a,int b=2,int c=1);

1. 表达式或函数可以作为默认实参。

int tmp1=1;
int tmp2=2;
int getVal(){return 1;}
void fun(int a=getVal(),int b=tmp1,int c=tmp2);

2. 局部变量不能作为默认实参。

//接上面的代码
void fun1()
{
    tmp1=3;//改变了默认实参
    int tmp2=3;//未改变默认实参
    fun();
}
函数fun1内部改变了tmp1的值,所以fun的调用会传递这个更新的值。

声明的局部变量隐藏了外层的tmp2,但是这个局部变量跟传递给fun的默认实参没有关系。

参考资料:《C++ Primer》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值