C++ thisポインタとは?

クラスのメンバ関数呼び出しの際には、
内部でそのクラスオブジェクトのポインタが渡されています。

このおかげで、メンバ関数内からクラスのメンバ変数に
アクセスできる仕掛けになっています。

thisポインタ無しでの記述例

ファイル名:hito.h

class hito {
public:
int age;
int sinchou;
int taiju;

void show_age();
void show_sinchou();
void show_taiju();

};

ファイル名:hito.cpp

#include <iostream>
#include "hito.h"

using namespace std;

void hito::show_age() {
      cout << "年齢は" << age << "です。" << '\n';
}

void hito::show_sinchou() {
      cout << "身長は" << sinchou << "です。" << '\n';
}

void hito::show_taiju() {
      cout << "体重は" << taiju << "です。" << '\n';
}

この例では、

メンバ関数show_ageの中でメンバ変数ageが、
メンバ関数show_sinchouの中でメンバ変数sinchouが、
メンバ関数show_taijuの中でメンバ変数taijuがそれぞれ使われています。

これもthisポインタのおかげ、と言うワケです。
thisを付けると、そのクラスのメンバである事がハッキリと分かるのが利点です。

thisポインタ付きでの記述例

ファイル名:hito.cpp

#include <iostream>
#include "hito.h"

using namespace std;

void hito::show_age() {
      cout << "年齢は" << this->age << "です。" << '\n';
}

void hito::show_sinchou() {
      cout << "身長は" << this->sinchou << "です。" << '\n';
}

void hito::show_taiju() {
      cout << "体重は" << this->taiju << "です。" << '\n';
}
タイトルとURLをコピーしました