this指针
在程序设计中,往往在定义函数成员时还没有具体的对象出现,但函数成员的定义中却往往要对它将要依附的对象进行处理。为此,c++语言为每个类的定义设置一个抽象的指针常量:this指针
this是关键字,属于实体(entity),是一个指针右值,只能在class, struct和union类型中的非静态成员函数/函数模板class指针访问,指向被调成员所属的对象。静态成员中无法使用this指针。
其有以下特征:
(1)this指针是类的指针类型,指向该类的对象地址。
(2)this指针是在该类的对象被创建时,同时被说明和创建。
结果为:
在程序设计中,往往在定义函数成员时还没有具体的对象出现,但函数成员的定义中却往往要对它将要依附的对象进行处理。为此,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