关于this指针的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:07:01
小弟菜鸟 对this只有很浅的认识
比如A是一个类 那么
A a;
表示a是一个A的对象 调用a.x()
其实编译器加了一个this指针作为参数 这个this指向要调用的对象

那么我的问题是 这个this指针是不是系统维护的一个唯一的指针
当我调用某个对象的成员函数或者Public成员变量时 this指针就指向那个对象 然而我接下来要调用另一个对象的函数和成员变量时 this又指向另一个对象? 还是this是每个对象隐藏的一个指针 每个对象都有一个this呢?

比如a.x()中调用了b.y() b.y() 那是不是这个this指针前指向a 后指向b b返回到a后再指向a?

this就相当于“我”这个词。每个人都可以说“我”,但是要根据不同的对象来看,不同的人说“我”只的对象是不一样的。
this就是指向自己这个对象的指针,是一个隐藏的成员变量。它不是一个全局的或者静态的,所以不会一会指向这个对象一会指向那个对象的。

你的问题的答案是:
this 是形参
就这么简单

打个比方:
void A::x(int this);
void B::x(int this);
两个都是 this,但鸟关系都没有

this只在类的定义中有意义,也就是说你可以将其看作是每个类内部的一个局部变量,而不同类中的this之间并不发生关系,就好像A类中有个成员变量int i,B类中也有个成员变量int i,这两个成员变量虽然类型和名字相同,但他们只在各自的作用域中起作用。
再比如
class A
{
private:
int a;//只有一个成员变量
public
A(int i = 0):a(i){ };//构造函数,含一个默认实参
int get_a()
{
return a;//此处即相当于return this->a (或*this.a)
}
/*一般情况下,只有某个成员函数需要返回调用自己的对象本身的引用时,显式的this指针才有意义,其他情况一般均可省略,例如下面的成员函数:*/

A& plus_myself()
{
++a;//将自身的成员变量自增一,同this->a或*this.a
return *this;
}
}

PS.非复制于其他处,完全自己一个字一个字打出来的。不信您可以搜