C++复习

C++中的this指针

2018-05-11  本文已影响5人  凉拌姨妈好吃

参考博客

简单说明一下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指针针对于某个对象,而不是某个类。

上一篇下一篇

猜你喜欢

热点阅读