?第三讲中孙老师提到的this指针到底指向基类对象还是派生类对象?
2006-07-25 09:37
966 查看
在第三讲中,孙老师说基类中使用的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指针指向的是基类的对象,这与孙老师的意思相反,
我的问题出在那里? 是我对他的意思理解有误?
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指针指向的是基类的对象,这与孙老师的意思相反,
我的问题出在那里? 是我对他的意思理解有误?
相关文章推荐
- 关于孙鑫MFC视频第三章中this指针指向基类还是派生类的测试程序
- 为什么要用基类指针指向派生类对象?
- 基类指针指向派生类对象
- C++ 派生类指针强制指向基类对象
- 基类指针指向派生类对象
- 面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析
- C++中,基类的指针指向派生类的对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- C++ 基类指针指向派生类对象
- 基类指针指向派生类对象
- [转]基类与派生类,父类指针指向子类对象
- 为什么基类指针和引用可以指向派生类对象,但是反过来不行?
- 为什么基类指针和引用可以指向派生类对象,但是反过来不行?
- 非多态的继承情况下,基类指针可以指向派生类对象么?
- 为什么基类指针和引用可以指向派生类对象,但是反过来不行?
- C++ 基类指针指向派生对象/派生类指针指向基类对象
- 基类与派生类,父类指针指向子类对象
- C++ 派生类指针强制指向基类对象
- 多态继承情况下,有一个基类指针指向派生类对象,如何用它调用基类的虚函数?