我的老师说[A]是正确答案,但为什么不是[C]。选项[B]作为原型有什么问题。选项[B]对我来说看起来很完美函数原型
以下哪个函数原型是完全可以接受的? A:
[A]。
int Function(int Tmp = Show());
[B]。
float Function(int Tmp = Show(int, float));
[C]。 A和B.
[D]。
float = Show(int, float) Function(Tmp);
我的老师说[A]是正确答案,但为什么不是[C]。选项[B]作为原型有什么问题。选项[B]对我来说看起来很完美函数原型
以下哪个函数原型是完全可以接受的? A:
[A]。
int Function(int Tmp = Show());
[B]。
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
和带有一个参数即称为Tmp
一个int
。 Tmp
正在被赋予一个默认值,但默认值是无效的部分。 Show(int, float)
是什么值?它似乎想要调用称为Show
的函数(或构造Show
类型的临时对象),并传递int
和float
作为参数。但是int
和float
不是函数的有效参数。
事实上,只有少数几个地方可以想到Show(int, float)
是C++语法的一种可能产生(不使用预处理器)。首先是作为Show
函数声明的一部分。例如:
int Show(int, float);
二是,如果Show
是一个类型,则给出一个函数类型。例如在:
foo<Show(int,float)>();
可能有一些其他的类似案件,其中没有实际调用一个名为Show
功能。
为什么不将int和float作为函数的有效参数?我认为所有重要的是,函数Show返回一个int值? – Computernerd
@Lim因为必须给一个默认参数一些默认值。例如'float Function(int Tmp = 5);'很好。 'Tmp'参数的默认值是'5'。对于调用'Show'工作的函数,你必须做一些类似'float Function(int Tmp = Show(5,6.0f));' –
@ stftrabbit谢谢 – Computernerd
试着编译它们,看看你得到了什么错误/警告。 –
我得到两个错误:默认参数不在参数列表和类型名称的末尾是不允许的。这是什么意思 – Computernerd