this指针的迷惑。解决方法

this指针的迷惑。
子类A的成员函数调用父类B的一个方法。显示调用:B::fun(),fun方法里用到了this指针。请问,这个this指针是指向谁?
 

------解决方案--------------------
子类A
------解决方案--------------------
探讨

子类A

------解决方案--------------------
关于this指针的一个经典回答:
  当你进入一个房子后,
  你可以看见桌子、椅子、地板等,
  但是房子你是看不到全貌了。
  对于一个类的实例来说,
  你可以看到它的成员函数、成员变量,
  但是实例本身呢?
  this是一个指针,它时时刻刻指向你这个实例本身
------解决方案--------------------
探讨

那如果子类A的成员函数显示调用父类B的方法:B::fun(),而B类又调用C类的方法:funC(),funC()方法用到this指针,这个this指针是指向谁的了?A、B、C的关系是A继承B,B继承C。

------解决方案--------------------
探讨

引用:
引用:

那如果子类A的成员函数显示调用父类B的方法:B::fun(),而B类又调用C类的方法:funC(),funC()方法用到this指针,这个this指针是指向谁的了?A、B、C的关系是A继承B,B继承C。

this表示自身的实例
朋友麻烦说的时候别一句话。单个类我明白。多个继承你说下原理?麻烦各位多指点下。别一句话就完事了,谢谢……

------解决方案--------------------
派生类的指针可以转换成基类的指针.

当你使用一个基类的函数或数据成员时,发生这一个转换.


------解决方案--------------------
this 就是本身 
当前什么是什么对象this就是什么

this 默认的类型就是当前类本身的一个const指针

C/C++ code

CurClass *const this;

------解决方案--------------------
子类继承父类也就是子类将父类的成员方法拷贝了一份到自己中,如果子类与父类有相同的方法的时候,用this指针调用的时候会调用子类的成员方法,如果子类与父类没有相同的方法的时候,那么this就会调用父类的那个方法:eg:
#include <iostream>
using namespace std;

//父类A
class A{
public:
void exportA{
cout<<"This is A"<<endl;
}

};
//子类B继承父类A
class B:public A{
public:
void exportB{
cout<<"This is B"<<endl;
}
};
int main()
{
B b;
b.exportB();
}
这个例子中子类B继承了父类A 那么子类B中的代码可以等效为:
class B{
public:
void exportA{
cout<<"This is A"<<endl;
}
void exportB{
cout<<"This is B"<<endl;
}

}这样就实现了代码的重用也就是继承的根本意义。那么this指向这个问题自然而然也就弄明白了:如果子类与父类有相同的方法的时候,用this指针调用的时候会调用子类的成员方法,如果子类与父类没有相同的方法的时候,那么this就会调用父类的那个方法。
------解决方案--------------------
C/C++ code

#include <iostream>

class Base
{
public:
    void run()
    {
        this->what();
    }
    void what()
    {
        printf("I am Base\r\n");
    }

    virtual void vrun()
    {
        this->what();
    }
};

class B: public Base
{
public:
    void run()
    {
    this->what();
    }

    void what()
    {
        printf("I am B\r\n");
    }

    virtual void vrun()
    {
        this->what();
    }
};
void run(Base *pa)
{
    pa->run();//输出是I am Base。
    pa->vrun();//输出是I am B。
};
void main()
{
    B b;
    b.run();//输出是I am B。
    run(&b);
    system("pause");
}

------解决方案--------------------
就简单的单继承来说,指向子类。之所以在父类中可以正常使用,是因为父类数据在头部,继承类数据在其后。建议你看看那本经典的 《深入探索C++对象模型》
------解决方案--------------------
探讨

ISO C++ 9.3.2措辞上(和Clause 5/Clause 12以及C99 TC等比起来)看来很业余,懒得抄了。
简单来说this的类型由所在作用域确定。

------解决方案--------------------
太扯了。

编码的时候,脱离了类的实现this就不能用了,你在实现哪个类的成员函数的时候使用了this,this就代表这个类的一个对象的指针。