1.提出
c++中,同一类的对象都有各自的数据成员的存储空间,但是系统不会为每个类的对象建立成员函数的副本。
Class Tclass
{
……………………..
print();
……………………..
};
若有Tclass A,*B;
A.print();
B->print();
但从成员函数voidTclass::print();看,并不知道它正在哪个对象上操作。
因此,c++中为成员函数提供了一个称为this的隐含指针参数。
2.说明
当一个对象调用类的成员函数时,该对象的地址传递给了this指针,从而在不同对象调用同一成员函数时不会出现混乱的情况
3.补充
1.一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行
2.对于静态成员函数,由于它是共同的操作,从而不需要指明它是哪个对象在操作,因此也就没有this指针
3.this是一个长指针,相当于classType * const this,所以一旦初始化(成员函数被调用)之后,获取了对象的地址,指针就不能就不能被修改,保证不会指向其他对象(这里是指在当前对象调用中不能修改)。