C++-Funktionen erklärt: Mit praktischen Code-Beispielen
Was ist eine Funktion in C++?
Eine Funktion in C++ ist ein in sich geschlossener Codeblock, der Eingaben entgegennimmt, diese verarbeitet und ein Ergebnis zurückgibt. Durch das Kapseln wiederkehrender Aufgaben in Funktionen vermeiden Entwickler Code-Duplikation und können Logik durch unterschiedliche Parameter einfach wiederverwenden.
Jede C++-Anwendung enthält mindestens eine Funktion: main(). Der restliche Code lässt sich in kleinere, zweckgebundene Funktionen gliedern, was Lesbarkeit und Wartbarkeit verbessert.
Modernes C++ stellt eine umfangreiche Standardbibliothek mit vordefinierten Funktionen bereit. Diese können direkt aufgerufen werden, ohne selbst implementiert zu werden.
In diesem Tutorial lernen Sie:
- Was eine Funktion in C++ ist
- Warum Funktionen unverzichtbar sind
- Eingebaute Bibliotheksfunktionen
- Benutzerdefinierte Funktionen
- Funktionsdeklaration und Prototyp
- Funktionsdefinition
- Syntax und Struktur
- Funktionsaufruf
- Argumente übergeben
Warum Funktionen nutzen?
Funktionen bieten vielfache Vorteile:
- Sie fassen zusammengehörige Anweisungen zusammen, was den Code leichter lesbar und verständlich macht.
- Sie eliminieren Wiederholungen und verringern so die Fehleranfälligkeit.
- Sie ermöglichen Code-Wiederverwendung in verschiedenen Programmteilen – oder sogar projektübergreifend – durch einen einfachen Funktionsaufruf.
Eingebaute Funktionen
Standardbibliotheksfunktionen sind vordefiniert und sofort einsatzbereit. Man ruft sie lediglich auf; eine eigene Implementierung ist nicht nötig.
Beispiel 1: sqrt() aus cmath verwenden
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double num, squareRoot;
cout << "Zahl eingeben: ";
cin >> num;
squareRoot = sqrt(num);
cout << "Die Quadratwurzel von " << num << " ist: " << squareRoot;
return 0;
}
Ausgabe:

Screenshot des laufenden Programms:

Code-Erklärung:
iostreamfür Ein-/Ausgabe einbinden.cmathfürsqrt()einbinden.- Namespace
stdnutzen, um Präfixe zu vermeiden. main()definieren, wo die Programmlogik liegt.numundsquareRootalsdoubledeklarieren.- Benutzer nach einer Zahl fragen.
- Eingabe in
numeinlesen. sqrt()aufrufen, um die Quadratwurzel zu berechnen.- Ergebnis ausgeben.
- 0 zurückgeben, um erfolgreiche Ausführung zu signalisieren.
Benutzerdefinierte Funktionen
Entwickler können eigene Funktionen erstellen, um anwendungsspezifische Logik zu kapseln.
Beispiel 2: Eine einfache Begrüßungsfunktion
#include <iostream>
using namespace std;
void sayHello() {
cout << "Hallo!";
}
int main() {
sayHello();
return 0;
}
Ausgabe:

Code-Screenshot:

Erklärung:
iostreamfür Konsolen-I/O einbinden.- Namespace
stdin den Gültigkeitsbereich holen. sayHello()definieren, eine Funktion, die einen Gruß ausgibt.sayHello()ausmain()aufrufen.- 0 zurückgeben, um erfolgreiche Beendigung anzuzeigen.
Funktionsdeklaration / Prototyp
Wenn eine Funktion nach main() definiert wird, muss der Compiler deren Signatur vorab kennen. Ein Prototyp liefert diese Information ohne Funktionsrumpf.
Beispiel für einen Prototyp:
int addFunc(int, int);
Es werden nur Rückgabetyp, Funktionsname und Parametertypen benötigt; Parameternamen sind optional.
Funktionsdefinition
Während der Prototyp dem Compiler das Interface mitteilt, liefert die Definition den ausführbaren Rumpf.
Beispieldefinition:
int addFunc(int num1, int num2) {
return num1 + num2;
}
Syntax
rueckgabetyp funktionsname(parameter_liste) {
// Funktionsrumpf
}
Wesentliche Bestandteile:
- rueckgabetyp – Typ des zurückgegebenen Werts (verwenden Sie
void, falls keiner). - funktionsname – Bezeichner, der Teil der Funktionssignatur ist.
- parameter_liste – null oder mehr typisierte Parameter.
- funktionsrumpf – die Anweisungen, die die Aufgabe erledigen.
Funktion aufrufen
Um eine Funktion auszuführen, muss man sie unter ihrem Namen aufrufen und ggf. erforderliche Argumente übergeben.
Beispielaufruf:
int ergebnis = addFunc(3, 5);
Argumente übergeben
Argumente müssen in Anzahl und Typ zur Parameterliste der Funktion passen. Abweichungen lösen Compilezeitfehler aus.
Standardparameterwerte können angegeben werden, sodass Aufrufer diese Argumente weglassen dürfen.
Beispiel 3: Zwei Zahlen addieren mit Prototyp
#include <iostream>
using namespace std;
int addFunc(int, int); // Prototyp
int main() {
int x, y, sum;
cout << "Zwei Zahlen eingeben: ";
cin >> x >> y;
sum = addFunc(x, y);
cout << "Die Summe von " << x << " und " << y << " ist: " << sum;
return 0;
}
int addFunc(int num1, int num2) {
return num1 + num2;
}
Ausgabe:

Screenshot:

Erklärung:
- Notwendige Header und Namespaces einbinden.
- Prototyp für
addFunc()deklarieren. - Zwei Ganzzahlen vom Benutzer einlesen.
addFunc()mit diesen Werten aufrufen und Ergebnis speichern.- Summe ausgeben.
addFunc()nachmain()definieren, mit der Logik zur Addition der beiden Parameter.
Zusammenfassung
- Funktionen bündeln zusammengehörigen Code in wiederverwendbaren Blöcken.
- Sie reduzieren Duplikation und verbessern die Codeklarheit.
- Eingebaute Bibliotheksfunktionen stehen über Header zur Verfügung; benutzerdefinierte Funktionen erfordern Deklaration und Definition.
- Funktionsprototypen informieren den Compiler vor der eigentlichen Definition.
- Übereinstimmung von Argumentanzahl und -typ ist Pflicht; Standardargumente bieten Flexibilität.
C Sprache
- C++ do‑while‑Schleife: Syntax, Praxisbeispiele und verschachtelte Schleifen
- C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
- C++ char‑Datentyp meistern: Deklaration, ASCII & Konvertierungstechniken
- C++ Operator‑Overloading: Praktischer Leitfaden mit Code‑Beispielen
- calloc() in C: Null-initialisierte Speicherallokation mit praktischem Beispiel
- Python Lambda-Funktionen meistern: Praxisbeispiele & Best Practices
- Python round()-Funktion erklärt mit praktischen Beispielen
- Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
- Verilog Functions meistern für effizientes RTL-Design
- C-Funktionen meistern: Struktur, Deklaration & Best Practices