this pointer
De 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. |
<metanoindex/>
Intérieur de la fonction membre non statique, contient un pointeur vers l'objet de classe à partir de laquelle la fonction a été appelée .
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.
Le type de pointeur est
this cv T* const où T est le nom de la classe et cv se réfère à la prescripteurs cv de la fonction du pointeur est utilisé po Par exemple:Original:
The type of
this pointer is cv T* const where T is the class name and cv refers to the prescripteurs cv 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;
|
Exemple
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