this指针

来源:互联网 发布:sql中amount可以更新吗 编辑:程序博客网 时间:2024/06/13 12:11

    C++中,同一类的每个对象都有自己的数据成员的存储空间,但系统不会为每个类的对象建立成员函数副本,类的成员函数可以被各个对象调用。例如,说明一个Tclass类的对象test,函数调用:

test.print()
在对象test上操作。同样,若说明一个指向Tclass的指针:

Tclass *p

则函数调用:

p->print()
在*p上操作。

    但从成员函数:

void Tclass::print();
的参数上看,并不知道它在哪个对象上操作。其实,C++为成员函数提供了一个称为this的隐含指针参数,所以,我们常常称成员函数拥有this指针。

    当一个对象调用类的成员函数时,对象的地址被传送给this指针,即this指针指向了该对象。this是一个隐含指针,不能显示说明,但可以在成员函数中显式使用。

    Tcalss的成员函数可以print可以这样书写:

void Tclass::print(){    cout<<this->x<<" "<<this->y<<endl;}
    this指针的显式使用主要在运算符重载、自引用等场合。

    this指针是一个常指针,相当于:

class_Type *const this
其中,class_Type是用户定义的类类型标识符。这里,this指针一旦初始化(成员函数被调用)之后,获得了对象的地址,指针值就不能够再修改和赋值,以保证不会指向其他对象。





0 0