this指针的用法和基本分析

this 指针是由系统自动提供的指向对象的特殊指针。该指针是由一个指向某个成员函数操作的对象指针。当对于一个对象调用成员函数时,编译程序先将该对象的地址付给系统创建的this指针,然后调用成员函数。每次成员函数存取数据成员时,都隐含使用this指针。同样也可以的使用*this来标识调用该成员函数的对象。
下面通过一个例子来说明:

#include<iostream>
using namespace std;
class A
{
public:
	A()
	{
		a=b=0;
	}
	A(int i,int j)
	{
		a=i;
		b=j;
	}
	void copy(A &aa);
	void print();
private:
	int a,b;
};
void A::copy(A &aa)
{
	if(this==&aa) return ;//如果this指针指向的是当前对象的地址,则直接跳出函数,反之将对象的值付给指针所指向的地址。
	*this=aa;//对于指针this进行赋值,* + 指针,表示地址。
}
void A::print()
{
	cout<<a<<" "<<","<<b<<endl;
}
int main()
{
	A a1,a2(3,4);
	a1.copy(a2);
	a2.print();
	a1.print();
	return 0;
}

程序执行结果是:
3 , 4

说明: 在该程序中,类A的成员函数copy()内,出现了两次this指针。其中,*this是操作该成员函数的对象的地址,从main()中可以看出操作该成员函数的对象是a1。*this是操作函数的对象,而下边语句:
*this=aa;
表示将形参aa获得的某个对象的值赋值给该成员函数的对象。在上述例子中,操作该成员函数的对象也是a1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值