我继承了一些包含以下类/函数(以及其他类)的代码。
基类
class Base
{
public:
virtual void erase() {};
virtual void draw() {};
}
派生类1
class Der1 : public Base
{
public:
virtual void erase();
virtual void draw();
}
派生类2
class Der2 : public Der1
{
public:
virtual void erase();
virtual void draw();
}
Base类包含两个虚函数,erase()和draw()都是空的,即它们在该级别什么都不做。
Der1类继承自Base并实现这些功能,即Der1对象在erase()和draw()中具有可执行代码。
Der2类继承自Der1,并以自己的方式再次实现这些功能。
当实例化其中一个Der2对象时,代码首先执行Base类的构造函数,然后执行Der1类,然后执行Der2类。
我遇到的是偶尔发生崩溃,通过调试,我指出Base类中的“erase()”函数为null,或者看似未初始化(即erase()的值为0x00000000)
其他时候,当代码按预期工作时,此函数具有有效的内存地址且不为空。
我看不出这是怎么发生的,所以如果有其他人见过这样的话,也许他们可以对此有所了解?
再次感谢
SRB