c++第二节之this指针

在c++中,每一个类的成员函数中,都隐藏了一个this指针,该指针是指向一个正在被某个成员函数操作的对象的指针,当对象调用成员函数时,系统会先将该对象的地址传给this指针,然后再调用成员函数,每次成员函数访问对象的成员时,都会使用this指针。
下面用一段代码来解释:

#include <iostream.h>
class A
{
   public:   A(int i,int j )//公共类型成员函数
			 {
				 int a,int b;
				 a = i;
				 b = j;
			 }
			 A( )
			 {
				 int a,int b;
			     a = b =0;
			 }
             void Copy(A &aa);
			 int Returna()
			 {
				 return a;

			 }
			 void Reyurna()
			 {
				 return b;
			 }
private:
	 int a, int b;//私有成员变量
};
void A::Copy(A &aa)//访问类A里面的成员函数Copy
{
	if (this == &aa)//判断this所指向的a1的地址是否与&aa相同
           return;
	else
		*this = aa;//将aa的值赋给this所指向的对象
}
int main ()
{
	A a1,a2(3,4);
	a1.Copy(a2);
	cout<<a1.Returna() -a2.Returna()<<","<<a1.Returna() + a2.Returna()<<endl;

}

其实this指针在结构和类之间起承转和作用,仅出现在非静态成员函数中

this->Copy::A();   this->Copy::A_test();//完整表示
Copy::A();          Copy::str;//与上一个基本相同访问特定类成员
this—>A();        this->str_1;//this指针访问,对象指针访问成员
A();                  str_1;//全缺省表示,与上一个基本相同
b.A()//假定对象b调用成员函数A
this此时等于&b;
则有   this->A();//表示对象b的隐藏指针调用成员函数。也可理解为隐藏的this指针是成员函数正确的操作对象数据
因此我们就可以理解:
void A::Copy(int a,int b)         void A::Copy(int a,int b)
{                                 {
    x = a;                             this-> x = a;
    y = b;                             this-> y = b;
}                                 }

有关this指针的问题:
1:this指针是在什么时候创建的?
this指针在成员函数开始执行前构造,在成员执行结束时清除
2:this指针存放在什么位置?
其会因编译器不同,可能是栈,也可能是寄存器,或者全局变量。
3:this指针是怎么传递类中的函数的?
通过函数参数的首参数来传递的
4:在c++中类和结构的区别?
类的成员默认为private(私有) 结构默认为public(共有)
this在其中作用相同。
5:this只能在成员函数中使用,全局函数,静态函数都不能使用this。
6:this并不是对象的一部分,不会影响sizeof(对象)的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值