Kurze Stil Frage bezüglich OOP
-
class foo { public: void DoSomething(); int CalculateSomething(); }; foo obj; void foo :: DoSomething () { Schreibt man besser: obj.CalculateSomething(); um zu wissen das die Funktion CalculateSomething(); aus der Klasse foo kommt. Oder ist es besser zu schreiben: CalculateSomething(); } Ich meine ich könnte hier ja auch noch eine Funktion drin haben die nicht in der Klasse ist wobei das warscheinlich sowieso schlechter Stil wäre.^^
-
Da CalculateSomething in Deinem Beispiel auf völlig unterschiedlichen Objekten aufgerufen werden könnte, würde die zutreffende Antwort lauten:
Man schreibt besser obj.CalculateSomething(), wenn die Methode auf obj aufgerufen werden soll. Man schreibt besser CalculateSomething(), wenn die Methode auf this aufgerufen werden soll.
-
Edit: Murks
-
Spekulation:
Meinst Du den Unterschied zwischen 1 und 1a unten? Der ist u.U. entscheidend bei Templates und Gedöns(tm).
Wenn Du auf die globale (freie) Funktion zugreifen willst brauchst Du einen Scope-Resolution-operator. Also den doppelten Doppelpunkt::.In C++ ist es allgemein üblich auf das
this->zu verzichten.Deine Variante ergibt leider keinen Sinn.
#include <iostream> class foo{ public: void DoSomething(); void CalculateSomething(){ std::cout << "foo::" << __func__ << '\n'; } }; void CalculateSomething() { std::cout << "::" << __func__ << '\n'; } void foo::DoSomething(){ CalculateSomething(); // 1 this->CalculateSomething(); // 1a ::CalculateSomething(); // 2 } int main(){ foo f; f.DoSomething(); }