【发布时间】:2015-03-09 09:18:39
【问题描述】:
我对 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 会报错。
感谢您提供的任何帮助。
问候
尼尔。
【问题讨论】:
标签: cppdepend