我想问一下,没有实现虚拟功能有问题吗?例如:
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,它会给出编译错误吗?或者如果我尝试调用derived.clone()?
,它会是运行时错误答案 0 :(得分:6)
如果尝试实例化具有未实现的纯虚函数(包括继承的虚函数)的类,则会出现编译错误。
答案 1 :(得分:1)
编译创建该类或其派生的实例的代码时会出错:error C2259: cannot instantiate abstract class
。