一、this的一般使用场景。
当我们在类的成员函数中调用类的成员变量时,可以直接使用变量名,但当成员函数内定义了一个与成员变量的变量名相同的变量时,由于作用域的优先级,将无法直接用函数名调用,这时我们就可以用到this指针。
class a {
public:
int Init(int year){
this->year = year;
}
private:
int year;
};
二、this指针的特点
1、this指针只能在成员函数中使用
成员函数默认第一个参数为T* const register this(this指针本身不可被修改)
(友元函数,全局函数不是成员函数)
如果此函数不会改变成员变量可以在成员函数声明的后方加上一个const,使this指针调用的变量无法被修改。
public:
int get() const
{
return this->year;(可以调用,不能修改)
}
2、this指针不能再静态函数中使用
静态函数如同静态变量一样,他不属于具体的哪一个对象(所有对象共享),而this指针却实实在在的对应一个对象,所以this指针不能被静态函数使用。
3、this指针只有在成员函数中才有定义
离开成员函数之后this指针本身被销毁了。
三、关于this指针的一个精典回答:
当你进入一个房子后,
你可以看见桌子、椅子、地板等,
但是房子你是看不到全貌了。
对于一个类的实例来说,
你可以看到它的成员函数、成员变量,
但是实例本身呢?
this是一个指针,
它时时刻刻指向你这个实例本身。