pure virtual function call

时间:6年前   阅读:4578

基类中定义了纯虚函数,派生类中将其实现。

如果在基类的构造函数或者析构函数中调用了该纯虚函数,

则会出现R6205 Error: pure virtual function call

对象在构造时,会先调用基类构造函数,但此时派生类对象还未构造成功,

因此调用的纯虚函数的虚表指针指向基类的虚表,而基类的纯虚函数没有定义。

如果是在基类的析构函数中调用,此时的派生类已经被销毁,也会出现这种情况。

#include <stdio.h>

class Base
{
public:
    Base()
    {
        printf("Base construction be called...\n");
        open_func();
    }

    void open_func()
    {
        printf("Base::open_func() be called...\n");
        show();
    }

    virtual void show() = 0;
};

class D : public Base
{
public:
    D()
    {
        printf("D construction be called...\n");
    }

    void show()
    {
        printf("D::show() be called...\n");
    }
};

int main()
{
    D d;
    return 0;
}

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

上一篇:上证50ETF期权交易有哪些技巧?

下一篇:PHP数组操作函数

网友评论

请先 登录 再评论,若不是会员请先 注册