Der Begriff "Modul" ist in C++ noch in der Ausarbeitung, du meinst
vermutlich einen Namespace?
Dann ist es Geschmacksache. Leute, die aus der Java-Welt kommen, packen
alle Funktionen als Memberfunktion in eine Klasse, weil es in Java gar
keine Funktionen gibt, sondern nur Methoden (der dortige Begriff für
Memberfunktion).
In C++ gibt es APIs mit beiden Varianten. In der STL sind die
Algorithmen beispielsweise außerhalb der Klassen implementiert, z.B.
for_each(...vector...) statt vector::for_each.
Ich persönlich mache es so: In eine Klasse gehört alles, was den Zustand
der Klasse betrifft, d.h. Funktionen, die Membervariablen ändern oder
benötigen. In den Namespace kommen Funktionen, die mithilfe der Klasse
und ihrer Memberfunktionen höhere Aufgaben erledigen können.
Beispiel: Es gibt eine Klasse HTTPClient, die sich um HTTP-Funktionen
kümmert. Diese sind zustandsbehaftet, z.B. für Authentifizierung und
Cookies. Eine Funktion "download", die den Inhalt einer URL in eine
Datei schreibt, würde ich dann nicht in diese Klasse packen, sondern so:
download(url, file, client = Client()). Das macht auch das Testen
einfacher, weil "client" in dem Fall ein Interface ist, das beim Testen
durch einen Stub oder Mock ersetzt werden kann.