Ondersteuning > Programmeren

c++ this pointer?

(1/2) > >>

Shonof:
Ik zit al een tijdje c++ te leren via een boek, maar ik snap maar niet wat een this pointer is en doet.
Bijv. dit hieronder doet hij het met een this pointer en zonder een this pointer. Waarom zou je het met een this pointer doen?

-------------------------

class this_pointer_example // class for explaining C++ tutorial
    {
        int data1;
     public:
        //Function using this pointer for C++ Tutorial
        int getdata()
        {
            return this->data1;
        }
      //Function without using this pointer
      void setdata(int newval)
      {
           data1 = newval;
      }
 };

-------------------------

Mischiem is er iemand die mij kan helpen?

JvH:
This is een pointer naar het huidige object. Waarom de schrijver in het bovenstaande voorbeeld alleen in getdata this gebruikt is mij ook niet helemaal duidelijk. Wel is het zo dat je die this-notatie kunt gebruiken om je code iets duidelijker/inzichtelijker te maken.

Even doorgaand op jouw codevoorbeeldje. Stel je hebt totaal geen fantasie, en gebruikt daarom voor zowel de klassevariabele als het argument van setdata de naam 'data':

--- Code: ---class this_pointer_example
{
   int data;
   public:
      void setdata(int data)
      {
         this->data = data;
      }
};
--- Einde van code ---
In dit geval maak je d.m.v. 'this->' duidelijk dat je het links van de = over de klassevariabele hebt, en rechts van de = over de parameter. Als het goed is zou dit voorbeeld trouwens ook zonder this moeten werken.

Shonof:
Dat is nou super uitleg! Bedankt voor de uitleg ik snap het helemaal!

JvH:
Graag gedaan :)

Shonof:
Waarom werkt dit alleen maar met -> dan en niet met een .???

hieronder is de code
Ik hoop dat er iemand is die mij kan helpen.
---------------------------------------------
---------------------------------------------

#include
using namespace std;

class Rechthoek {
   public:
      Rechthoek();
      ~Rechthoek();      
      void lengteInstellen(int lengte) { zijnLengte = lengte; }
      int lengteOphalen() const { return zijnLengte; }
      void breedteInstellen(int breedte) { zijnBreedte = breedte; }
      int breedteOphalen() const { return zijnBreedte; }
   
   private:
      int zijnLengte;
      int zijnBreedte;
};

Rechthoek::Rechthoek() {
   zijnLengte = 5;
   zijnBreedte = 10;
}

Rechthoek::~Rechthoek() {}

int main() {
   Rechthoek * pRecht = new Rechthoek;
   const Rechthoek * P_CONST_RECHT = new Rechthoek;
   Rechthoek * const P_CONST_AANW = new Rechthoek;
   cout

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie