this指针的学习

this指针的一些特性
1它并不是对象本身的一部分,不影响对象的结果。且它的作用域是在类的内部。
当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。例如:调用data.SetMonth(9)等价于SetMonth(&data,9)
2 this 指针可以保存当前对象的地址
3 使用
【1】this指针只能在成员函数中使用
【2】只有获得一个对象后,才能通过对象使用指针
【3】在类的非静态成员函数中返回类对象本身的时候,直接用return*this;
【4】当参数与成员变量名相同时,如 this-> n =n;(不能写成n=n)
4作用
this指针,它作为非静态成员函数的隐含形参,对各成员的访问都是通过this指针。成员函数之所以能对此类的各个对象的数据区别开来,就是靠this指针,函数体里面对数据成员的访问,都会转化为this->数据成员的形式。

this指针记录每个对象的内存地址,通过“->”访问该对象的成员

例1
  在这里插入图片描述
程序中this指针的使用分析:
a.对象point1调用Point 类中的MovePoint函数的时候,point1对象的地址
传递给了this指针。
b MovePoint函数的原型应该是void MovePoint(Pointthis, int a, int b),第一个
参数是应该是指向该类对象的指针,定义函数成员的时候没有看到是因为,
这个参数在类中是隐含的,这样point1对象的地址传给了this指针.
所以MovePoint函数显式的写为:
void MovePoint(Point
this, int a, int b){ this->x+=a; this ->y+=b;}
c 可知point1对象调用该函数后,point1对象的数据成员被更新了值。过程如下:
point1.x+ = a; point1.y+ = b;

类的实例就是类的对象
例2
在这里插入图片描述

【1】a.set(9)等同于set(&a,9)
【2】this->i=x;这句话就表示把x的值赋值给当前的对象的私有成员函数i。也就是把9的值给了i
【3】 i此时等于9,再第6句程序的时候,就get到了9的值。
这就是在类的非静态成员函数中调用非静态成员
由例2 可知
this指针作用:
this指针最大的作用就是保存了当前对象的地址,并用指针的形式指向了
当前的对象
转自:http://www.cnblogs.com/uniqueliu/archive/2011/09/24/2189545.html

猜你喜欢

转载自blog.csdn.net/zhangchunllll/article/details/106784732