为何要使用默认参数值?

  • 某些情况下需要使用某参数,某些情况又不需要
  • 想摆脱全局变量的影响

e.g.

  1. void bubble_sort( vector<int> &vec, ofstream *ofil =0 )
  2. //默认ofil为0,当需要输出时,对其进行赋值
  3. {
  4. for (int ix=0;ix<vec.size();++ix)
  5. for(int jx=ix+1;jx<vec.size();++jx)
  6. if(vec[ix]>vec[jx])
  7. {
  8. if(ofil!=0)
  9. (*ofil)<< "about to call swap";
  10. swap(vec[ix],vec[jx],ofil);
  11. }
  12. }

🐒默认参数值

C++允许为全部参数或者部分参数设定默认值;
关于默认参数值,有两个规则: :::info

  • 默认值的解析(resolve)操作由最右边开始进行;
  • 默认值只能够指定一次,可以在函数声明处,也可以在函数定义处,但不能同时出现
    • 为了更高的可见性,通常将默认值放在函数声明处而非定义处;
    • e.g. void bubble_sort( vector<int> &; ofstream *ofil=0 ) :::

小结

  • 默认参数的解析从最右边开始
  • 默认值只能初始化一次
  • 默认值和函数重载不能同时存在?