this 指针的疑问

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:42:21
大家好,我在深入详解VC++这本书第一章节看到这样的一个例子:
#include <iostream>
using namespace std;
class Point
{
public:
int x;
int y;
Point()
{x=0;
y=0;
}
Point(int a,int b)
{x=a;
y=b;
}
void input(int x,int y)
{
x=x;
y=x;}

void output()
{
cout<<x<<endl;
cout<<y<<endl;
}
};
void main()
{Point p(10,10);
p.input(5,5);
p.output();
}
问题:为什么
void input(int x,int y)
{
x=x;
y=x;}
就显示10,10,换成
void input(int a,int b)
{
x=a;
y=b;}就
显示正确5,5
书上说,用this就可以了
void input(int x,int y)
{
this->x=x;
this->y=y;}
这到底是怎么回事,哪位大牛可以给讲一下,小菜在此有礼了。谢谢~~~~

er..?我也不太清楚,我觉得主要是看this指针是指向那个成员函数吧,
this->x=x;的意思是,其实我就觉得,this指针还和这个对象POINT联系起来了,如果不用THIS,那么就光是函数内了吧,this指针其实就是起一个bridge(桥)的作用吧

this 是指向Point对象本身的指针。

在函数void input(int x,int y)里,形参x,y屏蔽了类Point的成员变量x,y。
所以x=x; y=x;没有任何实际意义,成员变量x,y还是没有改变。

函数void input(int a,int b)就不存在这个问题了,所以可以得到正确的答案。

在函数void input(int x,int y)里,被屏蔽掉的成员变量x,y可以通过this指针来访问,this->x,this->y分别指成员变量x,y.
this->x=x; this->y=y;就是分别将形参x,y赋值给成员变量x,y。