未实现虚拟功能

Not implementing a virtual function

本文关键字:功能 虚拟 实现      更新时间:2023-10-16

我想问,不实现虚拟函数有问题吗?例如:

class Function { 
public: 
    virtual ~Function() {} 
    virtual double value(double x) const = 0; 
    virtual Function* clone() const = 0; 
protected: 
    virtual void print(ostream& os) const = 0; 
    friend ostream& operator<<(ostream& os, const Function& f); 
}; 

在Function的派生类中,例如,如果clone没有实现,它会产生编译错误吗?或者,如果我尝试调用派生的.clone(),这会是一个运行时错误吗?

如果您试图实例化一个具有未实现的纯虚拟函数(包括继承的函数)的类,则会出现编译错误。

编译创建该类或其派生类的实例的代码时会出现错误:error C2259: cannot instantiate abstract class