C++中this指针的作⽤以及⽤法详解
为什么引⽤this指针?
当我们在类中定义了⼀个变量,同时⼜在类成员函数中定义了同⼀个变量时,也就是变量名重复时,但是我们要想使⽤类中的定义的变量,此时就需要this指针了。
1.this指针的作⽤
指针存在于类的成员函数中,指向被调⽤函数类实例的地址。
⼀个对象的this指针并不是对象本⾝的⼀部分,不会影响sizeof()的结果。
this指针的作⽤域是在类内部,当在类的⾮静态成员函数中访问类的⾮静态成员的时候,编译器会⾃动将对象本⾝的地址作为⼀个隐含参数传递给函数。换句话说就是,及时你没有⽤this指针,编译器在编译的时候也会⾃动加上this的,它是⼀个隐含形参,对各成员的访问均通过this进⾏。
2.this指针的使⽤
(1)在类的⾮静态成员函数中返回类对象本⾝的时候,直接使⽤ return *this;
(2)当参数与函数成员变量名相同时,应使⽤ this.age = age;
3.this指针的特点
(1)this指针只能在成员函数中使⽤
全局函数,静态函数都不能使⽤this指针,其实,成员函数的第⼀个默认参数是 *const  this
例:class Student()
{
int fun(int x)
{
}
};
函数fun(int x)的原型在编译器看来就是 fun(Student *const this ,int x)
(2)this 指针在成员函数的开始前构造,在成员函数的结束后清除,⽣命周期和其他函数参数⼀样。当调⽤⼀个类的成员函数时,编译器将类的指针作为函数的this参数传递进去。
如:Student stu;
stu.fun(3);
此时编译器会编译成:
Student::fun(&x,3);
(3)this指针会因编译器不同⽽有不同的放置位置。可能是栈,也可能是寄存器,甚⾄全局变量。
指针函数的作用在汇编级别⾥⾯,⼀个值只会以3种形式出现:⽴即数、寄存器值和内存变量值。不是存放在寄存器就是存放在内存中,它们并不是和⾼级语⾔变量对应的。