c++のthisポインタ
thisポインタ
プログラム設計では、関数メンバーを定義するときに特定のオブジェクトが現れないことが多いが、関数メンバーの定義では、依存するオブジェクトを処理することが多い.このため、c++言語はクラスごとの定義に抽象的なポインタ定数を設定します.thisポインタthisはキーワードです.エンティティ(entity)に属し、ポインタの右の値であり、class、struct、unionタイプの非静的メンバー関数/関数テンプレートclassポインタのみがアクセスでき、変調されたメンバーが属するオブジェクトを指します.静的メンバーではthisポインタは使用できません.(1)thisポインタはクラスのポインタタイプであり、クラスのオブジェクトアドレスを指します.(2)thisポインタは、クラスのオブジェクトが作成されたときに説明され、作成されます.
(3)thisポインタは、各クラスのメンバー関数に隠されている特殊なポインタ(コンストラクション関数とコンストラクション関数を含む)であり、メンバー関数で操作されているオブジェクトを指すために使用されます.
次に、thisポインタの例を示します.
x=6
y=3
thisポインタを持つメンバー関数の使用
修飾子constを関数ヘッダの後に書き、関数ボディの前に、この関数が常メンバー関数であることを説明します.この場合のconstは、関数の戻り値ではなく、関数ボディでthisポインタが使用されていることを意味します.
例:
結果:
M1=88
M2=66
プログラム設計では、関数メンバーを定義するときに特定のオブジェクトが現れないことが多いが、関数メンバーの定義では、依存するオブジェクトを処理することが多い.このため、c++言語はクラスごとの定義に抽象的なポインタ定数を設定します.thisポインタthisはキーワードです.エンティティ(entity)に属し、ポインタの右の値であり、class、struct、unionタイプの非静的メンバー関数/関数テンプレートclassポインタのみがアクセスでき、変調されたメンバーが属するオブジェクトを指します.静的メンバーではthisポインタは使用できません.(1)thisポインタはクラスのポインタタイプであり、クラスのオブジェクトアドレスを指します.(2)thisポインタは、クラスのオブジェクトが作成されたときに説明され、作成されます.
(3)thisポインタは、各クラスのメンバー関数に隠されている特殊なポインタ(コンストラクション関数とコンストラクション関数を含む)であり、メンバー関数で操作されているオブジェクトを指すために使用されます.
次に、thisポインタの例を示します.
#include<iostream>
using namespace std;
class S
{
public:
S(int x, int y)
{
this->x=x; this->y=y;
}
int Getx()
{
cout<<"x=";
return x;
}
int Gety()
{
cout<<"y=";
return y;
}
private:
int x,y;
};
int main()
{
S *p;
S s(6 , 3);
p=&s;
cout<<p->Getx()<<endl;
cout<<p->Gety()<<endl;
}
出力結果:x=6
y=3
thisポインタを持つメンバー関数の使用
修飾子constを関数ヘッダの後に書き、関数ボディの前に、この関数が常メンバー関数であることを説明します.この場合のconstは、関数の戻り値ではなく、関数ボディでthisポインタが使用されていることを意味します.
例:
#include<iostream>
using namespace std;
class Myclass
{
public:
Myclass(int i, int j)
{
m1=i;
m2=j;
}
int fun1() const { return m1;};
int fun2() const { return m2;};
private:
int m1,m2;
};
int main()
{
Myclass S(88, 66);
cout<<"M1="<<S.fun1()<<endl;
cout<<"M2="<<S.fun2()<<endl;
return 0;
}
結果:
M1=88
M2=66