C++中的类——this指针

一、什么是this指针

1、在类的方法内部可以使用this指针指向当前调用的对象。

二、this指针的属性及其实现方法

2、this是一个常亮指针,不允许改变this中保存的地址。

3、事实上,编译器为了实现this指针,会在成员函数的参数中自动添加一个this指针,并在函数调用时将对象自身的地址隐含作为实参传递给this。这样可以方便的用于对不同对象的数据成员或方法进行访问。

   详解:我们在操作某个对象时,一般会通过对象名加点运算符后跟该对象所属类中我们定义的方法来进行数据成员的访问和修改。我们通过对象名加点运算符实质上只能说明我们要操作的对象是该对象,但是方法是在类中定义的,它不属于某个对象。那么我们便需要一套机制来让该成员函数明确的知道暂时这个成员函数是“属于”某个对象的。所以这里引入了一个隐式的指针this,时刻提醒该函数“属于”该调用对象。即将对象的地址作为实参,传递给形参this指针,然后在需要用到数据成员的前面隐式的加上一个this->,实际上我们可以显式的将this->写出来,但是没有那个必要。

4、回顾之前的const成员函数。这时我们不难发现,const的作用是在修改this指针的类型,即将之前的顶层const(常量指针)改成既是顶层const也是底层const。

5、当一个成员函数调用另一个成员函数时,this指针在其中隐式的传递。比如,非常量成员函数内调用常量成员函数时,this指针将从指向非常量的指针转换成指向常量的指针。反过来,不能从指向常量的指针转换成指向非常量的指针,所以常量成员函数就不能调用非常量成员函数

三、使用this指针

6、我们无需使用this指针访问函数调用者的某个具体成员,而是需要把调用函数的对象当成一个整体来访问。

7、可以将解引用this指针(*this)作为成员函数的返回值。

   7.1、成员函数的返回值类型有如下另种情况:类类型和类类型的引用。

      7.1.1、如果返回类型是类类型的引用,则函数返回的是对象本身而非对象的副本,这时该函数可以是左值的。可以把一系列这样的函数连接在一条表达式中。

      7.1.2、如果返回类型是类类型,则函数返回的是对象的副本。

   7.2、如果是常亮成员函数,this将是一个指向常亮的指针,*this是这个常亮对象的引用即常亮引用,函数的返回类型也应该加上const限定符。这里需要注意,对象本身不一定是常亮,只是这里不允许改变对象的值。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值