为何要使用默认参数值?
- 某些情况下需要使用某参数,某些情况又不需要
- 想摆脱全局变量的影响
e.g.
void bubble_sort( vector<int> &vec, ofstream *ofil =0 )
//默认ofil为0,当需要输出时,对其进行赋值
{
for (int ix=0;ix<vec.size();++ix)
for(int jx=ix+1;jx<vec.size();++jx)
if(vec[ix]>vec[jx])
{
if(ofil!=0)
(*ofil)<< "about to call swap";
swap(vec[ix],vec[jx],ofil);
}
}
🐒默认参数值
C++允许为全部参数或者部分参数设定默认值;
关于默认参数值,有两个规则:
:::info
- 默认值的解析(resolve)操作由最右边开始进行;
- 默认值只能够指定一次,可以在函数声明处,也可以在函数定义处,但不能同时出现;
- 为了更高的可见性,通常将默认值放在函数声明处而非定义处;
- e.g.
void bubble_sort( vector<int> &; ofstream *ofil=0 )
:::
小结
- 默认参数的解析从最右边开始
- 默认值只能初始化一次
- 默认值和函数重载不能同时存在?