Operator Überladung



  • Hallo Zusammen!
    Bin nun (endlich) im Kapitel "Operatoren überladen" angekommen.
    Nun habe ich aber folgende Frage:

    Was ist der Unterschied zwischen

    class Foo
    {
      private:
        int sec; 
    
      public:
        Foo(const int& tempSec)
        {
           sec = tempSec;
        }
        int getStatus()
        {
           return sec;
        }
        Foo operator++()
        {
           sec++;
        }
    };
    

    und

    class Foo
    {
      private:
        int sec; 
    
      public:
        Foo(const int& tempSec)
        {
           sec = tempSec;
        }
        int getStatus()
        {
           return sec;
        }
        Foo& operator++()
        {
           sec++;
           return *this;
        }
    };
    

    Klar, im ersten Codeschnipsel wird keine Referenz auf das Objekt der Klasse Foo zurueckgegeben, aber wozu brauche denn eine Referenz auf das Objekt??
    In beiden Fällen wird die Variable sec doch inkrementiert.

    Kann ich darüber vielleicht aufgeklärt werden?
    Vielen Dank im voraus

    Caipi 🙂



  • zb um sowas zu machen:

    a=b++;//hhier wird der alte wert gesichert
    a=++b;//hier nicht, a und b haben den gleichen wert
    


  • @otze:
    Das sind doch beides Präfix-Inkrement-Operatoren.

    @Caipi:
    Erstelle doch einfach mal jeweils eine Instanz und mache folgendes:

    Foo f(1);
    ++++f;
    std::cout << f.getStatus() << std::endl;
    

    Edit: Semikolon vergessen...



  • Vielen Dank euch beiden, ich habs verstanden.


Anmelden zum Antworten