抽象类子类动态申请内存遇到的问题
2020-08-07 本文已影响0人
艳过无声
类A含纯虚函数virtual fun() = 0;
子类B:public A 实现时fun(int a){};
子类C:public A 实现fun(double b){};
然后在使用时写B *p = new B();提示抽象类不能动态申请内存。
原因:B的fun不是对纯虚函数的实现,而是一个全新的函数,基类的fun仍然是纯虚的。要想实现重写,必须参数完全一致。
类A含纯虚函数virtual fun() = 0;
子类B:public A 实现时fun(int a){};
子类C:public A 实现fun(double b){};
然后在使用时写B *p = new B();提示抽象类不能动态申请内存。
原因:B的fun不是对纯虚函数的实现,而是一个全新的函数,基类的fun仍然是纯虚的。要想实现重写,必须参数完全一致。