在C++的类中经常遇到this,但是this究竟是何物?相信很多新人肯定有这样那样的疑惑。
this后面经常带一个箭头如 this -> data = data云云。
下面就先举一个例子:
#include"iostream" using namespace std; class point { public: int x, y; point() { x = 0; y = 0; } point(int a, int b) { x = a;//同样的如果参数一致,还会导致变量可见性问题 y = b; } void output(void) { cout << x << endl << y << endl; } void input(int x,int y) { this->x = x; //使用this指针可以知道this->x是对象中成员变量的x this->y = y; } void OriginInput(int x, int y) { x = x; //使用鼠标点击x,即可知道,函数体内部的x是哪里的 y = y; //由于变量的可见性导致的问题 } //int input(int a, int b) 无法按照仅仅是返回类型不同来重载,对象不知道调用具体函数 void ChangeInput(int a,int b) //可以改变参数名称,使之与成员变量名不同。 { x = a; y = b; } }; void main() { point pt; pt.input(10, 10); pt.output(); pt.ChangeInput(5, 5); pt.output(); //对象pt被赋值后已经为(5,5) pt.OriginInput(6, 6); pt.output(); }
输出如下:
其实也可以看见了,this表示的是类本对象的指针,如这样一个函数
void init(int x, int y);
恰好,本类中有同名的成员变量即,
private:
int x = 0 ; int y = 0;
那么在函数里这样声明就比较清晰了
void init(int x, int y) { this -> x = x; this -> y = y; }
这就表示了,本对象的成员变量x, y被函数init的参数给赋值。