Neudefinition des Standardparameters in C++

Syed Hassan Sabeeh Kazmi 12 Oktober 2023
  1. Geben Sie Argumente in der Funktionsdeklaration an, um die Neudefinition des Standardparameterfehlers in C++ zu behandeln
  2. Geben Sie Argumente in der Funktionsdefinition an, um die Neudefinition des Standardparameterfehlers in C++ zu behandeln
Neudefinition des Standardparameters in C++

In diesem Lernprogramm erfahren Sie, wie Sie mit der Neudefinition von Standardparameter-Fehlern in C++ umgehen. Die Standardargumente in C++ müssen entweder in der Deklaration oder Definition der Methode oder der Funktion angegeben werden, aber aufgrund der Duplizierung nicht in beiden.

Geben Sie Argumente in der Funktionsdeklaration an, um die Neudefinition des Standardparameterfehlers in C++ zu behandeln

Was die Neudefinition des Standardparameterfehlers verursacht, ist seine Neudefinition in der Headerdatei, die jedes Mal von einer übergeordneten Datei aufgerufen wird und dazu führt, dass die Funktion oder Methode mehrmals neu definiert wird.

Sie können jedoch Standardargumente in späteren Deklarationen einer Funktion (oder Methode) im selben Bereich für Nicht-Vorlagenfunktionen (oder Methoden) hinzufügen. Deklarationen haben völlig unterschiedliche Sätze von Standardargumenten in verschiedenen Gültigkeitsbereichen.

Für jeden Parameter nach einem Parameter mit einem Standardargument muss ein Standardargument bereitgestellt, eine vorherige Deklaration oder ein Funktionsparameterpaket in einer gegebenen Funktionsdeklaration vorhanden sein. Die Neudefinition des Standardparameterfehlers tritt auf, wenn Sie Standardparameter in der Definition (Implementierung) festlegen, nicht nur in der Deklaration.

Codebeispiel:

#include <iostream>

// to process variables whenever called
void print(int x, int y) {
  std::cout << "x: " << x << '\n';  // x output
  std::cout << "y: " << y << '\n';  // y output
}

int main() {
  // function declaration
  void print(int x, int y = 3);

  print(7, 4);  // in this case, `y` is user-defined variable hence default
                // argument will be neglected
  print(6);  // in this case, `y` has no user-defined value hence, it will use
             // default argument
}

Ausgang:

x: 7
y: 4
x: 6
y: 3

Wenn Ihre Funktion (oder Methode) mehr als einen Parameter enthält, müssen die Standardwerte nach allen nicht standardmäßigen Parametern aufgeführt werden, z. B. void my_function (int a, char b);.

In C++ verursachen Standardargumente nicht direkt Tarpits von booleschen Parametern, aber diese Argumente verschlimmern ihre schädlichen Auswirkungen, und als Ergebnis werden boolesche Tarpits extrem komplex zu handhaben.

Geben Sie Argumente in der Funktionsdefinition an, um die Neudefinition des Standardparameterfehlers in C++ zu behandeln

Ein Funktionsaufruf kann die Argumente für jeden Funktionsparameter vom Aufrufer abrufen, wenn einer der Funktionsparameter ein Standardargument hat, und falls der Aufrufer kein Argument bereitstellt, wird stattdessen der Wert des Standardarguments dieses bestimmten Parameters verwendet . Ein einmal deklariertes Standardargument kann aufgrund der Duplizierung nicht erneut deklariert werden, was bedeutet, dass die Standardargumente in einer Funktionsdefinition deklariert werden können.

Die Vorwärtsdeklaration eines Standardparameters ist eine der bewährten Methoden, um ein Standardargument zu deklarieren, anstatt es in der Funktionsdefinition zu deklarieren.

Codebeispiel:

#include <iostream>

void print(int x, int y = 4)  // 4 is the default argument
{
  std::cout << "x: " << x << '\n';
  std::cout << "y: " << y << '\n';
}

int main() {
  print(1, 2);  // y will use user-supplied argument 2
  print(3);     // y will use default argument 4
}

// in case of multiple default arguments
void printmulti(int x = 10, int y = 20, int z = 30) {
  std::cout << "x: " << x << '\n';
  std::cout << "y: " << y << '\n';
  std::cout << "z: " << z << '\n';
}

Ausgang:

x: 1
y: 2
x: 3
y: 4

Ein Standardargument erscheint syntaktisch in einer Funktions- (oder Methoden-)Deklaration, aber das Standardargument selbst verhält sich insofern wie eine Definition, als es nur eines davon pro Übersetzungseinheit geben darf. Sie dürfen den Wert des Standardarguments in der Funktionsdefinition nicht wiederholen, was bedeutet, dass ein Teil der Schnittstelle der Funktion an der Stelle ihrer Implementierung unsichtbar ist.

Die Definition des Standardarguments an einer Stelle und die Auswertung an einer anderen führt zu Verwirrung über Aspekte von C++ in der Mitte, wie Namenssuche, Zugriffssteuerung und Instanziierung von Vorlagen.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

Verwandter Artikel - C++ Function