C++函数接口参数的默认值

Last Updated: 2023-05-16 09:37:23 Tuesday

-- TOC --

C++可以给函数接口的参数设置默认值!

比如,我们可以定义一个这样的接口:

void func(int a, int b=2, int c=3);

此时b和c都有默认值,因此在调用的时候,可以:

func(1);      // only a
func(1,5);    // a and b
func(1,5,9);  // a, b and c

关于C++函数接口参数默认值的几个重要规则:

  1. 有默认值的参数的后面的参数,也是必须提供默认值的参数;比如上例中b后面的c,也必须要有默认值。
  2. 函数调用的传参,还是要按照参数的顺序来,比如,我们无法在调用func接口时,只提供a和c,而b使用默认值,因为顺序的问题,做不到只传a和c(Python是解释执行,因此很容易能做到)。
  3. 参数的默认值,对于g++编译器,可以在函数申明时指定,也可以在定义时指定,但不能两边都指定。而对于MSVC编译器,测试发现,貌似只能在申明的时候指定默认参数值。(那就统一到在申明的时候填写默认参数值吧)
  4. 注意,constructor的参数有默认值时,有可能出可单参数调用的情况,需要考虑使用explicit申明,防止潜在的implicit conversion带来的隐患。

本文链接:https://cs.pynote.net/sf/c/cpp/202210121/

-- EOF --

-- MORE --