◐ Shell
clean mode source ↗

this pointer - cppreference.com

Da cppreference.com.

Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.

La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui.

Click here for the English version of this page

<metanoindex/>

All'interno non statico funzione membro, contiene un puntatore all'oggetto classe da cui viene chiamata la funzione.

Original:

Inside non-static member function, holds a pointer to the class object from which the function was invoked.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Il tipo di puntatore è this cv T* const dove T è il nome della classe e cv si riferisce alla cv specificatori della funzione viene utilizzato il puntatore in Per esempio:

Original:

The type of this pointer is cv T* const where T is the class name and cv refers to the cv specificatori of the function the pointer is used in. For example:

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Function signature Type of this
void T::foo()                T* const this;
void T::foo() const          const T* const this;
void T::foo() volatile       volatile T* const this;
void T::foo() const volatile const volatile T* const this;

Esempio

class T
{
    int x;

    void foo()
    {
        this->x = 5; // this used explicitly
        x = 6; // same as this->x = 6;
    }

    void foo() const
    {
        this->x = 7; // Error: *this is constant
    }

    void foo ( int x )
    {
        // parameter x shadows the attribute with the same name
        this->x = x; // unqualified x refers to the parameter, but the attribute is still accessible using the this pointer 
    }

    T& operator= ( const T& b )
    {
        x = b.x;
        return *this; // this is often used when a reference to the current object is needed
    }

    void bar ( const T& b )
    {
        // two ways to call class operators using this 
        (*this) = b;
        this->operator= ( b );
    }

    void bar()
    {
       // methods can be called even when there's no object
       // the this pointer can be seen like an additional parameter implicitly passed
       if ( this == NULL )
          return;
    }
};

T* pointer = reinterpret_cast<T*>(123);
pointer->bar(); // bar is called with 123 (0x7B) as value for this