1

我的老师说[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);

4

1 回答 1

6
float Function(int Tmp = Show(int, float));

这定义了一个被调用的函数,该函数Function返回一个float并接受一个被int调用的参数Tmp。被Tmp赋予默认值,但默认值是无效的部分。什么是价值Show(int, float)?它似乎想要调用一个名为Show(或构造一个类型的临时对象Show)的函数,传递intfloat作为参数。但是intandfloat不是函数的有效参数。

事实上,我认为只有少数几个地方可以Show(int, float)产生 C++ 语法(不使用预处理器)。首先是作为函数声明的一部分Show。例如:

int Show(int, float);

其次是,如果Show是一个类型,给出一个函数类型。例如在:

foo<Show(int,float)>();

可能还有其他一些类似的情况,它们都没有真正调用名为Show.

于 2012-12-28T16:15:02.587 回答