当一个参数在函数原型中被赋值时,这意味着什么

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

本文关键字:赋值 什么 意味着 原型 函数 一个 参数      更新时间:2023-10-16

我刚刚看到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需要一个字符串指针参数,编译器添加将int转换为字符串指针所必须的代码。然而这种自动行为可能会导致错误。