基类中的空虚函数

时间:2017-03-29 07:20:42

标签: c++ inheritance virtual-functions

我继承了一些包含以下类/函数(以及其他类)的代码。

基类

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

0 个答案:

没有答案