this指针
在每一个成员函数中都包含一个指向对象的首地址的指针,称为this指针,既指向对象本身的指针。
在32为机器下占4字节大小,利用寄存器ecx保存对象的首地址,并以寄存器传参的方式传递到成员函数中,这便是this指针的由来,并将这种调用方式称为thiscall。
例3、演示this指针的作用
#include<iostream>
usingnamespace std;
classCB;
classCA
{
public:
void Func(CB *pTest1);
};
classCB
{
public:
void Print()
{
cout<<"CallCB::Print()"<<endl;
}
CB &GetSelf()
{
return *this;
}
void Print2(CA *pObj2);
};
voidCA::Func(CB *pTest1)
{
pTest1->Print();
}
voidCB::Print2(CA *pObj2)
{
pObj2->Func(this);
}
voidmain()
{
CA objA;
CB objB;
objA.Func(&objB);
objB.GetSelf().Print();
}
类和结构体的异同:结构体的成员缺省是public的,类的成员缺省是private的;