我的老师说[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);
答案 0 :(得分:6)
float Function(int Tmp = Show(int, float));
这定义了一个名为Function
的函数,它返回float
并且接受一个名为int
的{{1}}参数。 Tmp
被赋予默认值,但默认值是无效的部分。 Tmp
的价值是多少?它似乎想要调用一个名为Show(int, float)
的函数(或构造一个Show
类型的临时对象),并将Show
和int
作为参数传递。但float
和int
不是函数的有效参数。
事实上,我只能想到float
可能产生C ++语法的几个地方(不使用预处理器)。首先是Show(int, float)
的函数声明的一部分。例如:
Show
其次,如果int Show(int, float);
是一个类型,则给出一个函数类型。例如:
Show
可能还有一些类似的案例,其中没有一个实际上调用了一个名为foo<Show(int,float)>();
的函数。