名前空間
変種
操作

this pointer

提供: cppreference.com
< cpp‎ | language

 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (非推奨)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
非静的メンバ関数の内部では、関数が呼び出されたクラスオブジェクトへのポインタを保持している.
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.
thisはクラス名であり、cv T* constポインタが例えばインチは使用されている関数のTを指すcvポインタの型はCV指定とおりです
Original:
The type of this pointer is cv T* const where T is the class name and cv refers to the 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.
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;

[編集]

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