Kursinhalt
C++ Funktionen
C++ Funktionen
Konstante Funktionsargumente
In C++, konstante Argumente in einer Funktion weisen darauf hin, dass die Werte, die der Funktion als Parameter übergeben werden, innerhalb der Funktion nicht verändert werden können. Um das konstante Argument zu deklarieren, müssen wir das const
Schlüsselwort vor dem Typ-Spezifizierer des Arguments in der Funktionssignatur verwenden:
Betrachten wir nun den Unterschied zwischen der Verwendung von const
bei Übergabe per Wert und bei Zeiger-/Referenzargumenten.
Übergabe von const-Argumenten per Wert
Wenn ein Parameter per Wert übergeben und als const
deklariert wird, bedeutet dies, dass eine Kopie des Wertes angefertigt wird, und die Funktion diese Kopie nicht ändern kann.
In diesem Fall dient das const
Schlüsselwort als Dokumentation und zeigt anderen Entwicklern an, dass die Funktion den Parameter nicht verändert:
example
double calculateSquare(const double number) { return number * number; }
Der const
-Qualifier stellt sicher, dass der Parameter number
innerhalb der Funktion calculateSquare()
nicht modifiziert werden kann, und garantiert so die Unversehrtheit der kopierten Daten.
Übergabe von const-Argumenten per Zeiger/Referenz
Die Verwendung von Konstanten mit Zeigern oder Referenzen gewährleistet die Bewahrung der Originaldaten, im Gegensatz zur Übergabe per Wert. Während die Speicheroptimierung oft die Übergabe von Parametern über Zeiger oder Referenzen erforderlich macht, wird es entscheidend, die Integrität der Originaldaten innerhalb der Funktion zu gewährleisten.
main
#include <iostream> // Function definition double calculateArea(const double* radiusPtr, const double& pi) { // Check if the pointer and reference are not null if (*radiusPtr > 0) return pi * (*radiusPtr) * (*radiusPtr); else return 0; // Invalid radius, return 0 } int main() { double radius = 5.0; double pi = 3.14159; double area = calculateArea(&radius, pi); std::cout << "Area of the circle with radius " << radius << " is: " << area << std::endl; }
Danke für Ihr Feedback!