this指针:
- C++中每一个对象都有一个this指针访问自己,它也是所有成员的隐含参数
- 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果
- this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数
- 它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行
- 任何对类成员的直接访问都被看成this的隐式使用,this的目的总是指向这个对象,所以this是一个常量指针,我们不允许改变this中保存的地址
#include<stdio.h>
#include<iostream>
using namespace std;
class Point
{
public:
Point(int x, int y) //其实是Point(Point *this, int x, int y),其中Point *this被隐藏
{
this->x = x; //你不可能让x = x吧,但是可以this->x = x
this->y = y;
}
Point* Check() { return this; }
private:
int x, y;
};
int main(void)
{
Point s1(0, 0), s2(2, 3);
cout<<&s1<<" "<<&s2<<endl;
cout<<s1.Check()<<" "<<s2.Check()<<endl;
//cout<<s1.this<<endl; 非法
return 0;
}
/*
输出结果:
012FFB24 012FFB14
012FFB24 012FFB14
*/