Die Frage, wo ich Funktionen platzieren soll, die sich nicht auf eine Klasse beziehen, hat einige Debatten ausgelöst, ob es in C ++ sinnvoll ist, Dienstprogrammfunktionen in einer Klasse zu kombinieren, oder ob sie nur als freie Funktionen in einem Namespace vorhanden sind.
Ich komme aus einem C # -Hintergrund, in dem die letztere Option nicht existiert, und tendiere daher natürlich dazu, statische Klassen in dem kleinen C ++ - Code zu verwenden, den ich schreibe. Die am höchsten bewertete Antwort auf diese Frage sowie mehrere Kommentare besagen jedoch, dass freie Funktionen vorzuziehen sind, selbst wenn man annimmt, dass statische Klassen ein Anti-Muster sind. Warum ist das so in C ++? Zumindest an der Oberfläche scheinen statische Methoden für eine Klasse von freien Funktionen in einem Namespace nicht zu unterscheiden zu sein. Warum also die Präferenz für Letzteres?
Wäre es anders, wenn die Sammlung von Utility-Funktionen einige gemeinsam genutzte Daten erfordern würde, z. B. einen Cache, den man in einem privaten statischen Feld speichern könnte?