我的老师说[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
作为参数。但是int
andfloat
不是函数的有效参数。
事实上,我认为只有少数几个地方可以Show(int, float)
产生 C++ 语法(不使用预处理器)。首先是作为函数声明的一部分Show
。例如:
int Show(int, float);
其次是,如果Show
是一个类型,给出一个函数类型。例如在:
foo<Show(int,float)>();
可能还有其他一些类似的情况,它们都没有真正调用名为Show
.