MFC中是通过什么方法实现 派生类覆盖基类的?
在编写MFC代码时会发现自己写的所有控件和窗口都是从一个基类继承而来的,但是自己把派生类写好之后并没有把派生类覆盖到基类身上,但是自己写的派生类还是被运行了。
class A
{
public:
virtual int f()=0;
};
class B : public A
{
public:
virtual int f()
{
return 12;
}
};
A *a;
B b;
main()
{
a=&b;
std::cout<<a->f();
}
比如上面的写法,一定需要吧派生类b覆盖回虚基类a,才能执行std::cout<<a->f();
我想MFC中也有类似的过程,但是它具体是怎么做到的?
MFC中还有一个奇怪的地方:
int CMFCDirectXApp::Run()
{
// TODO: 在此添加专用代码和/或调用基类
while (msg.message!=WM_QUIT)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
}
return CWinApp::Run();
}
上面是在CMFCDirectXApp中重载了Run(),但是代码的最后一行“return CWinApp::Run();”是什么意思,具体作用是什么?
谢谢!