繁体   English   中英

在函数原型中为参数分配值是什么意思?

[英]What does it mean when a parameter is assigned a value in the function prototype?

我刚刚在C ++中看到了函数原型的以下语法:

explicit String(unsigned char value, unsigned char base=10);

我以前从未见过,但是不管您用什么来称呼它都将base设置为10,对吗?

默认参数(称为base将采用您发送的任何值,如果不使用该参数,则取值10,例如通过调用

String(0);

鉴于您只能使用一个参数调用它,因为第二个参数可以默认设置,所以可以将构造函数标记为explicit 这意味着,如果您不注意,就不会根据unsigned char创建临时文件,必须显式调用构造函数。

base具有默认值。 您可以为每个参数分配默认值,前提是以下所有参数也都具有默认值。

explicit防止隐式转换,因此String k = 0将不被视为有效-否则将调用String(0, 10)

看到这个链接

声明函数时,我们可以为每个最后一个参数指定默认值 如果在调用函数时将相应的参数留为空白,则将使用此值。 为此,我们只需要在函数声明中使用赋值运算符和参数值即可。 如果在调用函数时未传递该参数的值,则使用默认值 ,但如果指定了值,则将忽略该默认值,而使用传递的值。

显式关键字可防止隐式转换:

仅具有一个参数的C ++ ctor(构造函数)将自动执行隐式类型转换。 例如,如果在ctor需要一个字符串指针参数时传递了一个int,则编译器会添加将int转换为字符串指针所必须的代码。 但是,这种自动行为可能会导致错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM