Was ist der Vorteil einer freien Funktion (im anonymen Namespace und nur in einer einzigen Quelldatei zugänglich) und Senden aller Variablen als Parameter im Gegensatz zu einer privaten Klasse Member-Funktion frei von Parametern und direkt auf Mitgliedsvariablen zugreifen? Vielen Dank!Freie Funktion gegen Member-Funktion
Header:
Class A {
int myVariable;
void DoSomething() {
myVariable = 1;
}
};
Quelle:
namespace {
void DoSomething2(int &a) {
a = 1;
}
}
int A::SomeFunction() {
DoSomething2(myVariable); // calling free function
DoSomething(); // calling member fucntion
}
Wenn Sie es vorziehen, sie Mitglieder dann machen, was, wenn ich einen Fall, der ich zuerst eine Funktion aufrufen, die keine Mitgliedsvariablen zugreift, sondern dass Funktion ruft eine andere Funktion auf, die auf ein Mitglied zugreift. Sollten sie beide Mitgliedfunktionen oder kostenlos sein?
Kannst du zumindest Code schreiben, der * triest * kompiliert? – Shoe
@StephaneRolland Nein, dieser Link ist über öffentliche Schnittstelle, nicht über die Implementierung – TemplateRex
@TemplateRex lassen Sie mich darauf bestehen, es geht um die Verwendung von Member-Funktionen oder nicht. Ich zitiere die Antwort mit den Worten: "Da viele und viele Methoden direkt von den Interna der Klasse abhängen, impliziert die geringste Veränderung eine ganze Neuschreibung. Es muss nicht so sein." –