c++中的默认实参有一些特殊的属性

Default Argument in C++ have some special properties?

本文关键字:属性 默认 实参 c++      更新时间:2023-10-16

这是面试试题,不是家庭作业。测试已经完成了。

下面哪个关于c++默认实参的陈述是正确的?

A. Default Argument cannot be of a user-defined type.
B. Default Argument can never precede non-default arguments
C. Default Argument cannot be of pointer type.
D. Default Argument exist in global heap not function's stack
E. Default Argument are not considered for generating the function's signature. 

我选了B和e,这些正确吗?我不确定D,对吗?

B为真。A, C, D为假。

E需要澄清。这取决于"生成函数的签名"是什么意思。

对于编译器来说,签名就是签名。默认参数只在调用函数时起作用。这就是替换默认值的地方。因此,函数具有编写时使用的签名。

如果"生成函数的签名"意味着"函数的c++签名是什么",那么签名并不关心参数是否为默认值。但是,如果"生成函数的签名"意味着"如何调用它",那么它确实关心默认值。

A, C, D都是绝对错误的。B是正确的。我对E不太确定,我总是忘记