kurze Frage zum this Zeiger ..



  • Hallo Leute ..
    Ich hab mal wieder eine kurze Frage .
    Bei nicht statischen Methoden einer Klasse wird ja der this Zeiger mit übergeben.
    Die Member die ich jetzt innerhalb der Methode manipulieren möchte beziehen sich ja immer auf das Objekt von dem die Methode aufgerufen wurde .
    Warum lese ich dann in manchen Büchern Code-Beispiele in denen explizit mit this gearbeitet wird ?

    Dazu ein Beispiel :

    class A
    {
    int a;
    public:
    int getA()const ;
    
    };
    
    int A::getA()const
    {
      return a;
     // return this->a; //hierbei handelt es sich doch um die selbe Anweisung oder gibt es hier einen Unterschied zu return a ?
    }
    

    gibt es einen Unterschied zwischen den beiden Return-Anweisungen ?

    Mfg



  • Bacid90210 schrieb:

    gibt es einen Unterschied zwischen den beiden Return-Anweisungen ?

    In diesem Fall nicht.

    Bacid90210 schrieb:

    Warum lese ich dann in manchen Büchern Code-Beispiele in denen explizit mit this gearbeitet wird ?

    Weil wenn ein Methodenparameter gleichnamig wie ein Bezeichner von this ist, zuerst auf den Methodenparameter zugegriffen wird.



  • Also falls meine Methode einen Parameter names "time" übergeben bekommt

    int A::getSomething(int time)
    {
      time = 0 ; // Übergabeparameter 
      this->time = 0 ; // time der Instanz 
    }
    

    und mein Objekt auch eine Instanzvariable namens time besitzt . Müsste ich explizit mit this arbeiten weil sonst der übergebene Parameter verändert wird?



  • Genau!



  • Ja. Local scope hätte sonst Vorrang.



  • Ok .. thx.



  • Ich würde an deiner Stelle die Compilerwarnungen einschalten, der GCC warnt z.B. bei Variablenverdeckung und dann ggf. die Parametervariable umbenennen oder ihr einen Präfix/Postfix geben.


Log in to reply