C++中的默认参数有一些特殊属性吗?

use*_*288 4 c++ heap arguments default function

这是一个面试测试问题而不是作业.测试已经完成.

以下哪些关于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. 
Run Code Online (Sandbox Code Playgroud)

我选择了B和E.这些是正确的吗?我不确定D,这也是正确的吗?

Nic*_*las 7

B是真的.A,C和D都是假的.

E需要澄清.这取决于"生成函数签名"的含义.

就编译器而言,签名是签名.默认参数仅在调用函数时有用.这就是默认值被替换的地方.因此该函数具有写入的签名.

如果"生成函数的签名"意味着"函数的C++签名是什么",则签名不关心参数是否为默认值.但是,如果"生成函数的签名"意味着"你如何称呼它",那么它确实关心默认值.