C++——this指针

本文详细解释了this指针在C++中的概念,包括其在成员函数中的自动隐含、特点(如不能自定义、类型为*const等)、以及它作为形参如何在栈区存储。还介绍了编译器如何处理this指针的传递方式。
摘要由CSDN通过智能技术生成

this指针

什么是this指针

        在使用类函数时,该函数会隐藏一个this指针,它会负责找到我们成员函数中所需的成员变量(成员变量可以是私人的),如下图所示,上面是我们调用时的用法,下面是隐藏的this指针重新加上的效果。

        在成员函数中使用this指针的时候,可以不用写出来,编译器自己会加上。但我们也可以自己加上this指针。

This指针特点:

        1. 在成员函数形参和实参部分不能自己定义this指针(编译器不让你干他的活)但在成员函数内部存在this指针,并且可以调用它。

        2. this指针的类型:* const,即在成员函数中,我们不能给this指针赋值

        3. this指针只能在“成员函数”的内部使用

        4. this指针本质上是“成员函数”的形参,当对象调用成员函数时,将对象地址作为实参传递给this形参,所以对象中不存储this指针

        5. this指针是“成员函数”第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递

       This指针存储在哪?

        内存被分为:堆区,栈区,静态区,常量区,代码区。堆区需要malloc,静态区需要static修饰或者本身就是全局变量,常量区存放的是常量,代码区存放的是代码。所以this指针只能存放在栈区(this指针是一个形参),有些编译器会把this指针放在寄存器中(方便更快速地使用)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值