自引用指针this

C++为成员函数提供了一个名字为this的指针,这个指针称为自引用指针,每当创建一个对象时,系统就把this指针初始化为指向该对象,即this指针的值是当前调用成员函数的对象的起始地址。每当调用一个成员函数时,系统就自动把this指针作为一个隐含的参数传给该函数。不同的对象调用同一个成员函数时,C++编译器将根据成员函数的this指针所指向的对象来确定该引用哪一个对象的数据成员。

#include<iostream>
using namespace std;
class A
{

public:
    A(int x1)
    {
        x=x1;
    }
    void disp()
    {
        cout<<"\nthis="<<this<<"\n"<<"when x="<<this->x<<"\n";
    }
    void copy(A &a);
private:
    int x;
};
void A::copy(A &a)
{
    if(this==&a)//this指针是调用该成员函数的对象的地址
        return;
    *this=a;//*this指针是调用该成员函数的对象。
}
int main()
{
    A a(1),b(2),c(3),d(3);
    a.disp();
    b.disp();
    c.disp();
    d.copy(a);
    d.disp();
    return 0;
}

posted @ 2013-10-02 19:16  wj704  阅读(385)  评论(0编辑  收藏  举报