关于C++ 中的This指针

本文详细解释了C++中的This指针概念及其工作原理。介绍了This指针如何指向类对象自身,并通过示例展示了其在成员函数中的隐式及显式使用方式。此外,还讨论了This指针的特点及其与其他类型函数指针的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                  关于C++ 中的This指针

   在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为This

   它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址

   例:成员函数volume的定义是

                      <pre name="code" class="cpp">     int Box::volume()
                        { 
                            return(height*width*length);  //隐含使用this指针
                        }



而C++把它处理为

   int Box::volume(Box *this)
                        { 
                            return(this->height*this->width*this->length);  //显式使用this指针
                        }
即在成员函数的形参列表中增加一个this指针。

在调用该成员函数时,实际上用的方法为:a.volume(&a),即将对象a的地址传给形参this,然后按this的指向去引用其他成员。

注:上述过程都是编译系统自己动实现的。(该过程仅为使大家能更好的理解this指针的作用和实现机理)

当然也可以用*this表示被调用的成员函数所在的对象,*this就是this所指向的对象,即当前对象。如下:

 int Box::volume(Box *this)
                        { 
                            return((*this).height(*this).width(*this).length);  //  *this就是对象a
                        }
注:this两侧的括号不能去掉,因为成员运算符“.”的优先级别高于指针运算符“*”。

this 指针的特点:

     1、this在成员函数的开始前构造,在成员函数的结束后清除。生命周期与其它函数的参数类似。与静态函数的区别:编译器会对this做优化处理,因此使得this指针的传递效率较高。

 2、this指针的作用域在类成员函数的内部。全局函数、静态函数都不能使用。

 3、this指针并不是对象本身的一部分,不影响sizeof的结果。

 4、叫this指针而不是引用的原因:传指针会产生临时变量而传引用不会产生临时变量。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值