this pointer
Da cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Dentro não-estático função de membro, contém um ponteiro para o objeto da classe a partir da qual a função foi invocada.
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.
You can help to correct and verify the translation. Click here for instructions.
O tipo de ponteiro é this
cv T* const
onde T
é o nome de classe e cv
refere-se à cv especificadores da função do apontador são utilizados dentro Por exemplo:Original:
The type of this pointer is
cv T* const
where T
is the class name and cv
refers to the cv especificadores 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.
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; |
[editar] Exemplo
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