C++的新特性,签名定义

New to C++, signature definition

本文关键字:定义 新特性 C++      更新时间:2023-10-16

我有一个用C++编写的函数:

foo (IN bool someMode = false)

这是什么意思?someMode是否总是初始化为false?即使foo是用true调用的?

这意味着即使foo接受一个参数,您也可以在不传递任何参数的情况下调用此函数:

 foo(); //ok

如果这样调用,那么someMode的值将是false,因为这是其默认值。函数签名中的someMode = false意味着,如果没有传递参数,那么someMode将是false。在编程中,这样的参数被称为默认参数,并且在此上下文中的false被称为该参数的默认值。

然而,如果您愿意,您可以传递参数:

foo(false); //ok 
foo(true);  //ok

这是一个默认参数,基本上,如果您调用:,则可以省略它

foo();

那么someMode仍然存在,并设置为false,但如果您调用

foo(true);

则someMode将为true。

通常IN是一个什么都不做的宏,只是让您知道参数是函数的输入,所以您真正拥有的是foo(bool someMode=false)。剩下的是一个默认参数。这意味着你可以这样调用代码:

foo(true); // Here someMode=true
foo(false); // Here someMode=false

或者像这个

foo(); // Here someMode=false