简单说明一下this指针到底是什么
class是用户自定义的类型,我们都知道int *p是指向int类型的指针,而 this就是指向class的指针。对this指针进行解引用就得到自定义类型的变量。
this指针的作用域
它的作用域在类内部,当类的非静态成员函数调用非静态成员时,编译器会自动将类的地址作为一个隐含参数传递给函数。
class MyClass
{
void test(MyClass *this,int arg1, float arg2) {}
//第一个参数就是隐含参数
};
this的值是否可以改变?
不行,this存在的目的就是为了一直指向某个对象,所以this是常量指针,不能修改它的指向
class Point
{
int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
};
void main( )
{
Point point1( 10,10);
point1.MovePoint(2,2);
//point1调用该成员函数时,将point1的地址作为隐含参数传递给了成员函数
//相当于void MovePoint(int a, int b) { this->x +=a; this-> y+= b;}
//即 point1.x+= a; point1. y + = b;
}
this指针是在何时创建的?
在成员函数执行之前构造,执行结束之后清除
为什么this指针不用于静态成员函数?
静态成员函数的作用域是全局的,并不是属于某个对象的,而是整个类共有的。this指针针对于某个对象,而不是某个类。
网友评论