在第三讲中,孙老师说基类中使用的this指针在派生类生成的对象当中,是指向派生类对象的,可是我按他说的方法去测试一下,结果是指向基类对象,这是为什么?
CTestAPP 由 CWinAPP 派生而来
CWinApp::CWinApp(LPCTSTR lpszAppName) //带参数
{
...........................
pThreadState->m_pCurrentWinThread = this;
//注意,这个this指针指向那个对象?是CWinAPP还是CTestAPP
//孙老师说是指向派生类CTestAPP的对象,但是我的试验中却是指向基类对象啊
ASSERT(AfxGetThread() == this);
.............................
}
我做的试验如下:
class Point
{
public:
void output()
{
cout<<"调用了基类的output()函数.";
}
void cjp()
{
this->output();
}
};
class test:public Point
{
public:
void output ()
{
cout<<"调用了派生类的output函数。";
}
};
void main()
{
test tt;
tt.cjp();
}//endof main()
按孙老师的意思应该输出:“调用了派生类的output函数”,但是结果是 "调用了基类的output()函数."
说明this指针指向的是基类的对象,这与孙老师的意思相反,
我的问题出在那里? 是我对他的意思理解有误?