功能原型

时间:2012-12-28 16:06:49

标签: c++ function

我的老师说[A]是正确的,但为什么不是[C]。选项[B]作为原型有什么问题。选项[B]对我来说非常好

  

以下哪个功能原型完全可以接受?

     

[A]。 int Function(int Tmp = Show());

     

[B]。 float Function(int Tmp = Show(int, float));

     

[C]。 A和B都是。

     

[d]。 float = Show(int, float) Function(Tmp);

1 个答案:

答案 0 :(得分:6)

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

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

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

Show

其次,如果int Show(int, float); 是一个类型,则给出一个函数类型。例如:

Show

可能还有一些类似的案例,其中没有一个实际上调用了一个名为foo<Show(int,float)>(); 的函数。