c++指定默认值的参数为什么必须放在形参列表里最右端
时间: 2023-10-29 18:05:42 浏览: 110
C++中map和vector作形参时如何给定默认参数?
在 C++ 中,指定默认值的参数必须放在形参列表的最右端,原因有以下两点:
1. 方便编译器实现
在函数调用时,可以省略某些参数,让编译器使用默认值。编译器在处理这种情况时,会从左到右逐个读取参数,如果默认值的参数不在最右侧,则编译器就无法确定哪些参数被省略了,从而无法正确地处理调用。
2. 避免二义性
如果默认值的参数不在最右侧,那么就可能会出现二义性。例如:
```cpp
void func(int a = 0, int b, int c = 1);
```
在这个函数中,参数 `b` 没有默认值,而参数 `a` 和 `c` 都有默认值。如果我们调用 `func(1)`,那么编译器无法确定省略的是参数 `b` 还是参数 `c`,从而无法正确地处理调用。
因此,为了避免二义性,指定默认值的参数必须放在形参列表的最右侧。
阅读全文