vc 父类实现一个虚函数,子类继承并也实现这个虚函数,子类调用这个虚函数,父类这个虚函数为什么不会执

2024-11-25 01:24:30
推荐回答(2个)
回答1:

CWnd 的 OnCommand() 是虚函数:
virtual BOOL OnCommand(WPARAM wParam,LPARAM lParam);
它只传递信息(变量),并无具体处理和计算。相当于一个“接口”,留给继承类 覆盖/改写。

CView 是 CWnd 的 一个派生类,它需要 重写 (override)这个 函数,提供具体处理和计算。
CWnd 的 别的派生类,也可以重写这个 函数。

程序执行时,才决定到底调用哪个具体的重写 后的函数。-- 所谓“一个接口,多种方法”。
在CView里执行CView里的OnCommand()
在CDoc里执行CDoc里的OnCommand()

回答2:

通过虚表实现