我对 CPPDepend 检测虚函数使用的能力有一点小问题。考虑以下场景。两个类,CParentClass 和 CChildClass,其中 CChildClass 派生自 CParentClass。CParentClass 有一个虚函数Test,CChildClass 覆盖了Test 的基类版本。
在使用方面,出于各种原因,我想做以下事情:-
CChildClass * pMyChild = new CChildClass();
CParentClass * pParentClass = (CParentClass*)pMyChild;
int B = pParentClass->Test();
delete pParentClass;
这会导致 pMyChild 的 Test 函数根据需要被调用,但 CPPDepend 没有检测到这一点,并声称永远不会到达代码。如果我将“虚拟”一词添加到 CChildClass 中的测试函数头(除了已经在 CParentClass 中的那个),那么 CPPDepend 声称一切正常。
任何人都可以为我阐明这一点,因为我应该将 virtual 放在派生类函数和基类函数中感觉不对。
在派生类中使用 CDialog 析构函数可以看到类似的问题。如果派生类析构函数声明中没有 virtual,CPPDepend 会抱怨。
谢谢你提供的所有帮助。
问候
尼尔。