换个方式问,这样描述清晰点解决方案

换个方式问,这样描述清晰点
有如下调用过程:

1、
A   *pA   =   new   A();
构造函数A()里调用了Init1()函数,该函数定义如下:

2、
void   A::Init1()
{
B*   pB   =   new   B();
pB-> Init2();
}

3、
其中的Init2函数为:
void   B::Init2()
{
C::Init3();
}
其中C::Init3()函数定义如下:

4、
BOOL   C::Init3()
{
//这个函数里用到了this指针,那么这个this指针是哪个对象指针传进来的?
}

注:其中,B是从C派生的

------解决方案--------------------
那个this是指向一个B类对象的。因为“C::Init3”前面的“C::”只是明确限定执行C::Init3里的代码(即使B中有的override时亦如此),但时它并不能凭空产生出新的对象。

你也可以这样理解:除非是故意写恶意代码,否则this指针是一定指向某个对象的。
在你的程序中,没有看到哪里曾创建一个独立的C对象。那么肯定还有指向原来的B类对象,或者至少是一个跟原来的B对象有关的位置(比如存在多继承或虚拟继承时)。
------解决方案--------------------
B类对象的。

void A::Init1()
{
B* pB = new B();
pB-> Init2();
}
这里pB-> Init2(); 生成的是B类对象了
后面
void B::Init2()
{
C::Init3();
}
只是调用了B对象中的 C 子对象中的方法而已 ~

所以,this 还是 B类对象 的