C++类:this指针

成员函数无论是否是静态都只有一份,需要通过this指针来帮助成员函数确定是哪个对象在调用他。This指针是成员函数的一个隐式形参,隐含在每一个非静态成员函数内,不需要声明定义,直接调用即可。我们不能显示地调用this指针。

This指针帮助我们来把对象当成一个整体来访问,而非直接访问对象的某个成员。

This指针指向被调用的成员函数所属的对象。This指针的本质其实是一个指针常量,即指针是一个常量指针。比如在使用类创建一个对象A时,this指针就会一直指向这个对象A,而不会指向其他地方。即在调用成员函数时会通过this指针将对象的地址隐式地传入成员函数。相当于以下结构:

This指针指向的对象不可以修改,但是可以通过解引用的方式,修改对象里的值,如下:

对象调用成员函数,成员函数中的成员属性前面会默认隐式的加上this ->,相当于隐式地加上对象名 ->。

在类的非静态成员函数中,可以通过返回*this来返回对象本身(因为this指向的就是对象)。哪个对象调用的成员函数,该成员函数里的this就指向的那个对象。

如这里,函数中的this指向的就是p1。这里返回的是一个引用,因此后续操作对象还是这个p1。如果去掉那个&返回的是一个值的话,则根据拷贝函数的定义,返回的过程其实是将p1重新拷贝赋值给了一个新的变量p1’。

当形参与成员属性同名时,可用this来区分。

当程序是这个样子时,编译器会将这三个age认作是同一个变量。也就是说调用这个构造函数时给这个age赋的值将无法传输给属性age。面对这种情况,要么改变属性的名称,要么写成这种形式:

同样,在类内部,每一个属性的前面其实也有this->,即this指针也帮助成员属性确定了是哪个对象在调用他。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值