形参重定义
形参重定义指的是在函数定义时,重新定义了已经在函数原型中声明的形参。这是一种常见且容易犯的错误,通常会导致编译报错。
具体来说,当在函数原型中声明了一个形参,然后在函数定义中又使用了相同的名称来定义另一个形参(尽管可能是不同类型的形参,或者是同一个类型但意图用作不同目的的形参),编译器就会因为无法区分这两个同名的形参而报错。
例如,在C++中,如果有一个函数原型声明如下:
double change(double x); |
但在函数定义中不小心写成了这样:
double change(double x) { | |
double x; // 这里就发生了形参重定义 | |
return 1.8 * x + 32.0; // 这里的x实际上是未初始化的局部变量x,而不是函数参数x | |
} |
在这个例子中,函数定义中的double x;
与函数原型中的形参double x
重名了,导致编译器无法识别应该使用哪个x
。此外,这个未初始化的局部变量x
还会导致未定义行为,因为在使用它之前没有被赋予任何值。