C++:面向对象基础(一)

this 指针

this 指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作对象也就是要操作该成员函数的对象。同样也可以使用*this来标识调用该成员函数的对象。

例1 this指针应用

#include using namespace std;class Point{private: int x, y; public: Point(int a, int b){ x=a; y=b;}void MovePoint(int a, int b){x+=a; y+=b;} void print(){cout<<"x="<<x<<"y="<<y<<endl;}};int main(){ Point point1(10,10); point1.MovePoint(2,2); point1.print(); return 0;}

例1中当对象point1调用MovePoint(2,2)函数时,即将point1对象的地址传递给了this指针。MovePoint函数的原型应该是void MovePoint(Point *this, int a,int b);第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。这样point1的地址传递给了this,所以在MovePoint函数中便显示写成:

void MovePoint(int a, int b){this ->x+=a; this ->y+=b;}

即可以知道,point1调用该函数后,point1的数据成员就被调用并更新值了。

即如下代码可以实现同样的功能

#include using namespace std;class Point{private: int x, y; public: Point(int a, int b){ x=a; y=b;}void MovePoint(int a, int b){this ->x+=a; this ->y+=b;} void print(){cout<<"x="<<x<<"y="<<y<<endl;}};int main(){ Point point1(10,10); point1.MovePoint(2,2); point1.print(); return 0;}