Wie kommst du auf die Idee?
Weil bei guter OOP keine Funktion zweimal vorkommen wird, da sie in Klassen als Methoden gekapselt sind und eine Klasse auch nicht zweimal vorkommen sollte (was mach ich zB mit zwei Klassen namens Person? - eine Person ist eben eine Person)
C++ ist allerdings keine objektorientierte Sprache und man kanns auch nie komplett objektorientiert programmieren, da man sonst "Funktionsrestklassen" definieren müsste, wie zB für die mathematische Funktionssammlung...
das Objekt cin (als Instanz der Klasse istream) würde bei guter OOP auch niemals zweimal vorkommen, dadurch wird die Idee von Namespaces konterkariert (ich liebe dieses Wort ), die ja gerade verhindern sollen, das der Compiler nicht weiß, welches Objekt / welche Funktion gemeint ist.
Beispiel:
datei1.hpp:
...
foo()
...
datei2.hpp:
...
foo()
...
datei3.cpp:
#include <datei2.hpp>
#include <datei1.hpp>
...
foo();
...
Alles anzeigen
Dem kann man mit Namespaces abhelfen, was aber nichts daran ändert, dass es bei guter Programmierung nicht vorkommen sollte.