我刚刚在C ++中看到了函数原型的这种语法:
explicit String(unsigned char value, unsigned char base=10);
我之前没有见过这个,但我是否正确地假设它将base
设置为10而不管你用什么称呼它?
答案 0 :(得分:4)
名为base
的默认参数将采用您发送的任何值,或者值10,如果您将其关闭,例如通过调用
String(0);
鉴于您只能使用一个参数调用它,因为第二个参数可以默认,构造函数可以标记为explicit
。这意味着它不会在unsigned char
创建临时值而您没有注意到,您必须显式调用构造函数。
答案 1 :(得分:1)
base
有一个默认值。您可以为每个参数指定默认值,前提是所有后续参数都具有默认值。
explicit
会阻止隐式转化,因此String k = 0
不会被视为有效 - 否则会调用String(0, 10)
。
答案 2 :(得分:0)