Modernes C++ und C-Alternativen

Funktionsüberladung und C-Alternativen

C++ wählt Overloads nach Parametertypen; C benötigt verschiedene Namen oder generischen Dispatch.

Was ist Funktionsüberladung und C-Alternativen?

C++ wählt Overloads nach Parametertypen; C benötigt verschiedene Namen oder generischen Dispatch.

Nutze eine Operation für mehrere Typen.

Wichtige Punkte

  • Verstehe zuerst den C-Mechanismus.
  • Drücke Ownership durch RAII und Wertsemantik aus.
  • Bevorzuge typsichere Abstraktionen gegenüber Makros und Casts.

Codebeispiele in C und C++

C
Code ausführen →
main.c
#include <stdio.h>

int max_int(int left, int right) {
    return left > right ? left : right;
}

double max_double(double left, double right) {
    return left > right ? left : right;
}

int main(void) {
    printf("%d %.1f\n", max_int(3, 8), max_double(4.5, 2.0));
}
Erwartete Ausgabe
8 4.5
C++
Code ausführen →
main.cpp
#include <iostream>

int maximum(int left, int right) {
    return left > right ? left : right;
}

double maximum(double left, double right) {
    return left > right ? left : right;
}

int main() {
    std::cout << maximum(3, 8) << ' '
              << maximum(4.5, 2.0) << '\n';
}
Erwartete Ausgabe
8 4.5

Vergleich zwischen C und C++

C kodiert den Typ im Funktionsnamen. C++ behält einen Namen und löst den Overload ohne Laufzeitkosten zur Compilezeit auf.

C

C nutzt Namenskonventionen, Callbacks, Makros und Kontextstrukturen.

C++

Sprachfeatures liefern bereichsgebundene, typsichere Abstraktionen.

Übungsaufgaben

Führe beide Versionen aus und untersuche die unterschiedlichen Garantien.

  • Implementiere zuerst den C-Mechanismus.
  • Ersetze manuelles Cleanup durch RAII.
  • Prüfe zusätzliche Allokationen und virtuellen Dispatch.