yyyyye void func(int a, int b, int c = 10); void func(int d = 5, int e = 8, int f) { cout << d << ' ' << e << ' ' << f << endl; } int main() { func(6); return 0; } 在c++环境中,上述代码是否存在编译错误? 若存在,说明原因;若不存在,其输出结果是什么?
yyyyye 正确答案: $6\ 8\ 10$ 同一个函数的声明可以多次定义缺省值,但出现缺省参数时,位于后面的参数缺省参数必须已被声明。(即从后往前申明缺省值) 为什么非重复缺省参数的缺省值声明会被允许?因为(我认为)这个过程相当于实现了函数的重载。 调用函数时,将依次填充缺省参数。(即从前往后填充参数) 在本题中,$func$三个参数的缺省值依次为$5,8,10$,调用时将$5$填充为$6$,故输出结果$6\ 8\ 10$。