C++ Neudefinition von formalen Parametern

Abdul Mateen 12 Oktober 2023
  1. Funktionsdefinition in C++
  2. Neudefinition von Formalparametern in C++
C++ Neudefinition von formalen Parametern

In diesem Tutorial werden wir das Problem der Neudefinition von formalen Parametern in C++ diskutieren.

Zuerst werden wir die Funktionsdefinition und formale Parameter besprechen. Als nächstes behandeln wir die Frage der Neudefinition formaler Parameter.

Funktionsdefinition in C++

Bei der Programmierung werden Parameter und Argumente abwechselnd verwendet. Formal gibt es jedoch nur wenige Unterschiede zwischen ihnen.

Parameter werden in die Klammer geschrieben, die nach dem Funktionsnamen in der Signatur im Funktionskopf steht. Argumente sind die Werte, die mit einem Funktionsaufruf gesendet werden.

Hinweis: Manchmal werden Argumente als Parameter und Parameter als formale Parameter bezeichnet.

Es ist wichtig, diese Terminologie vor der weiteren Diskussion zu klären. Schauen wir uns also einen Funktionsheader unten an:

void add (int a, int b)

Siehe Signatur der Funktion Hinzufügen. Dabei sind a und b formale Parameter.

Siehe Aufruf der Funktion add:

int result = add(2, 5);

Innerhalb des Funktionsaufrufs sind 2 und 5 Argumente, die an die Funktion gesendet werden, während a und b formale Parameter der Funktion add diese Werte erhalten. Wichtig zu beachten ist, dass a und b neben formalen Parametern auch lokale Variablen der Funktion add sind.

Der Unterschied zwischen anderen lokalen Variablen und formalen Parametern besteht darin, dass formale Parameter Werte von außerhalb der Funktion erhalten, wenn eine Funktion aufgerufen wird. Die anderen lokalen Variablen können jedoch keine Werte außerhalb der Funktion erhalten.

Siehe anderen Code:

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

In diesem Codebeispiel gibt es zwei formale Parameter (d. h. a und b) und drei lokale Variablen (d. h. result, a und b ). Innerhalb der Funktion add können Sie alle drei Variablen gleichermaßen verwenden.

Sie können diese Variablen eingeben, einen konstanten Wert oder eine Variable zuweisen und sie in Ausdrücken verwenden.

Nachdem wir uns eine Vorstellung von formalen Parametern gemacht haben, wollen wir nun über die Frage der Neudefinition von formalen Parametern sprechen.

Neudefinition von Formalparametern in C++

Als Programmierer von C++ müssen Sie wissen, dass es nicht zwei Variablen mit demselben Namen im selben Gültigkeitsbereich geben kann. Beispielsweise können Sie keine globalen Variablen mit demselben Namen deklarieren (der Typ spielt keine Rolle).

Sie können Datenelemente mit demselben Namen nicht in derselben Klasse deklarieren. Ebenso können Sie nicht zwei lokale Variablen mit demselben Namen deklarieren.

Schauen wir uns das folgende Beispiel an, um es besser zu verstehen:

int a;
char a;

Bei der Kompilierung gibt dieser Code den folgenden Fehler aus:

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

Ähnliches Problem in der Klassendefinition:

class A {
  int a;
  int a;
};

Bei der Kompilierung gibt dieser Code den folgenden Fehler aus:

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

Die Nachricht kann anders sein, aber das Problem ist das gleiche, d. h. zwei gleichnamige Variablen können nicht im gleichen Bereich existieren. Es ist jedoch möglich, Variablen mit demselben Namen in verschiedenen Bereichen zu haben.

Der folgende Code wird beispielsweise ohne Fehler kompiliert:

#include <iostream>
using namespace std;

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

Die Ausgabe dieses Codes ist:

3
4

In der Hauptfunktion ist nur die lokale Variable a sichtbar/zugänglich (die globale Variable wird in diesem Bereich von der lokalen a überschattet). Daher gibt die Anweisung cout den Wert der lokalen Variablen a aus, der 3 ist.

In der Funktion f ist die globale Variable a sichtbar/zugreifbar, und die print-Anweisung druckt den Wert der globalen Variablen, der 4 ist.

Manchmal können die Programmierer versehentlich sowohl formale Parameter als auch lokale Variablen mit demselben Namen verwenden. In diesem Fall existieren beide im gleichen Geltungsbereich.

Daher generiert der Compiler einen Fehler.

Schauen wir uns den Code und die Antwort des Compilers an:

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

Ausgang:

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

Im obigen Code hat die Funktion f einen formalen Parameter x und eine lokale Variable x, die beide lokale Variablen der Funktion f sind. Folglich sehen Sie den Compiler-Fehler declaration of 'int x' shadows a parameter, was bedeutet, dass eine lokale Variable und ein formaler Parameter den gleichen Namen haben.

Kurz gesagt, als Programmierer von C++ müssen Sie darauf achten, die lokalen Variablen nicht mit ähnlichen Namen wie die formalen Parameter zu deklarieren. Andernfalls unterscheidet der Compiler nicht zwischen ihnen und generiert den Fehler.

Verwandter Artikel - C++ Function