面试重点-this指针

this指针是隐含每一个非静态成员函数内的一种指针
this指针不需要定义,直接使用即可

成员函数和成员变量是分开存储的
每一个非静态成员函数只会诞生一分函数实例,也就是说多个同类型的对象会共用一块代码
那么问题来了:这一块代码是如何区分哪个对象调用自己的呢?

C++通过特殊的对象指针“this”指针,解决上述问题,this指针指向被调用的成员函数所属的对象(谁调用它,this就指向谁)

this指针的用途:
1.当形参和成员变量同名时,可用this指针来区分
2.在类的非静态成员函数中返回对象本身,可使用return*this,注意此时函数返回的类型是该类的引用,如:Point& (Point是定义的类名);

#include "pch.h"
#include <iostream>
using namespace std;

//解决名称冲突,当形参和成员变量同名时,可用this指针来区分
class person {

public:

	//构造函数
	person(int age) {

		//age = age;//这样写是错误的,名称发生冲突
		this->age = age;//这样写是正确的,this指针指向被调用的成员函数所属的对象(谁调用它,this就指向谁)

	}
	//成员函数.在类的非静态成员函数中返回对象本身,可使用return*this
	person&  personaddage(person &p) {
	//因为是返回对象本身,所以前面是person而不是void等这种类型的,用引用的方式

		this->age += p.age;

		return *this;//this指向p2的指针,而*this指向的就是p2这个对象本体,用person的引用返回本体
	}

	int age;


};
void test01() {
	//person p;//当上面写了构造函数。则不能直接这样写,会显示报错:不存在默认构造函数,因为上面写了有参构造
	person p(10);

	cout << "age =" << p.age << endl;
 }

void test02() {

	person p1(10);
	person p2(10);
	p2.personaddage(p1);
	p2.personaddage(p1).personaddage(p1).personaddage(p1);
	cout << "p2=" << p2.age << endl;
}

int main()
{

	test01();
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值