C++ Redefinición de parámetro formal

Abdul Mateen 12 octubre 2023
  1. Definición de funciones en C++
  2. Redefinición de Parámetro Formal en C++
C++ Redefinición de parámetro formal

En este tutorial, discutiremos el tema de la redefinición de parámetros formales en C++.

Primero, discutiremos la definición de la función y los parámetros formales. A continuación, abordaremos el tema de la redefinición de los parámetros formales.

Definición de funciones en C++

En programación, se utilizan alternativamente parámetros y argumentos. Sin embargo, formalmente, hay pocas diferencias entre ellos.

Los parámetros se escriben dentro del paréntesis, que viene después del nombre de la función en la firma del encabezado de la función. Los argumentos son los valores enviados con una llamada de función.

Nota: A veces, los argumentos se denominan parámetros y los parámetros se denominan parámetros formales.

Es esencial aclarar esta terminología antes de continuar con la discusión. Entonces, echemos un vistazo a un encabezado de función a continuación:

void add (int a, int b)

Ver la firma de la función añadir. Aquí, a y b son parámetros formales.

Ver llamada a la función añadir:

int result = add(2, 5);

Dentro de la llamada a la función, 2 y 5 son argumentos enviados a la función, mientras que los parámetros formales a y b de la función add recibirán estos valores. Es importante señalar que además de los parámetros formales, a y b también son variables locales de la función sumar.

La diferencia entre otras variables locales y parámetros formales es que los parámetros formales reciben valores desde fuera de la función cada vez que se llama a una función. Sin embargo, las otras variables locales no pueden recibir valores fuera de la función.

Ver otro código:

void add(int a, int b) {
  int result = a + b;
  cout << "Result: " << result << '\n';
}
add(2, 5);

En este ejemplo de código, hay dos parámetros formales (es decir, a y b) y tres variables locales (es decir, resultado, a y b ). Dentro de la función agregar, puede usar las tres variables de manera similar.

Puede tomar entradas en estas variables, asignar algún valor constante o variable y usarlos en la expresión.

Después de tener una idea sobre los parámetros formales, ahora hablemos sobre el tema de la redefinición de los parámetros formales.

Redefinición de Parámetro Formal en C++

Siendo un programador de C++, debe tener una idea de que no puede haber dos variables con el mismo nombre en el mismo ámbito. Por ejemplo, no puede declarar variables globales con el mismo nombre (el tipo no importa).

No puede declarar miembros de datos del mismo nombre en la misma clase. De manera similar, no puede declarar dos variables locales con el mismo nombre.

Veamos el siguiente ejemplo para entenderlo mejor:

int a;
char a;

En la compilación, este código da el siguiente error:

redefinion1.cpp:6:6: error: conflicting declaration ‘char a’
 char a;
      ^
redefinion1.cpp:5:5: note: previous declaration as ‘int a’
 int a;

Problema similar en la definición de clase:

class A {
  int a;
  int a;
};

En la compilación, este código da el siguiente error:

redefinion1.cpp:9:6: error: redeclaration of ‘int A::a’
  int a;
      ^
redefinion1.cpp:8:6: note: previous declaration ‘int A::a’
  int a;

El mensaje puede ser diferente, pero el problema es el mismo, es decir, dos variables con el mismo nombre no pueden existir en el mismo ámbito. Sin embargo, es posible tener las mismas variables de nombre en diferentes ámbitos.

Por ejemplo, el siguiente código se compilará sin error:

#include <iostream>
using namespace std;

int a = 4;
void f() { cout << a << '\n'; }
int main() {
  int a = 3;
  cout << a << '\n';
  f();
  return 0;
}

La salida de este código es:

3
4

En la función principal, solo la variable local a es visible/accesible (la variable global está sombreada por la a local en este ámbito). Por lo tanto, la sentencia cout imprime el valor de la variable local a, que es 3.

En la función f, la variable global a es visible/accesible, y la sentencia print imprime el valor de la variable global, que es 4.

A veces, por error, los programadores pueden usar tanto parámetros formales como variables locales del mismo nombre. En este caso, ambos existen en el mismo ámbito.

Por lo tanto, el compilador genera un error.

Echemos un vistazo al código y la respuesta del compilador:

void f(int x) { int x = 4; }

Producción :

redefinion1.cpp: In function ‘void f(int)’:
redefinion1.cpp:6:6: error: declaration of ‘int x’ shadows a parameter
  int x = 4;
      ^

En el código anterior, la función f tiene un parámetro formal x y una variable local x, las cuales son variables locales de la función f. En consecuencia, puede ver el error del compilador la declaración de 'int x' sombrea un parámetro, lo que significa que una variable local y un parámetro formal tienen el mismo nombre.

En resumen, siendo un programador de C++, debe tener cuidado de no declarar las variables locales con nombres similares a los parámetros formales. De lo contrario, el compilador no distinguirá entre ellos y generará el error.

Artículo relacionado - C++ Function