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();
    }
    

Anmelden zum Antworten