pure virtual function call
时间:6年前 阅读:4669
基类中定义了纯虚函数,派生类中将其实现。
如果在基类的构造函数或者析构函数中调用了该纯虚函数,
则会出现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,我们将及时处理。
微信扫码关注
更新实时通知
网友评论