大家好,又见面了,我是你们的朋友全栈君。
为什么引用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种形式出现:立即数、寄存器值和内存变量值。不是存放在寄存器就是存放在内 存中,它们并不是和高级语言变量对应的。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145381.html原文链接:https://javaforall.cn