我的老师说[A]是正确的答案,但为什么不是[C]。选项 [B] 作为原型有什么问题。选项 [B] 对我来说看起来非常好
以下哪个函数原型是完全可以接受的?
[一种]。
int Function(int Tmp = Show());[乙]。
float Function(int Tmp = Show(int, float));[C]。A 和 B 都可以。
[D]。
float = Show(int, float) Function(Tmp);
float Function(int Tmp = Show(int, float));
这定义了一个被调用的函数,该函数Function返回一个float并接受一个被int调用的参数Tmp。被Tmp赋予默认值,但默认值是无效的部分。什么是价值Show(int, float)?它似乎想要调用一个名为Show(或构造一个类型的临时对象Show)的函数,传递int和float作为参数。但是intandfloat不是函数的有效参数。
事实上,我认为只有少数几个地方可以Show(int, float)产生 C++ 语法(不使用预处理器)。首先是作为函数声明的一部分Show。例如:
int Show(int, float);
其次是,如果Show是一个类型,给出一个函数类型。例如在:
foo<Show(int,float)>();
可能还有其他一些类似的情况,它们都没有真正调用名为Show.