问题描述
最近写程序时,做了一个基类供其他模块调用,调试时出现了下面的错误:
pure virtual method called
如图所示:

纯虚函数被调用。纯虚函数是需要子类具体实现的函数,怎么就被调用了呢?
首先明确观点:永远不要在构造和析构中直接/间接调用virtual函数。
下面是根据查阅的资料和自己的理解作出的解释,供参考。
抽象类和纯虚函数
来复习一下c++中的纯虚函数和抽象类。
c++使用虚函数来实现运行时多态,如:
class Shape {
public:
virtual double area() const = 0;
double value() const;
// Effective c++ 第三版之条款7:
virtual ~Shape();
protected:
Shape(double valuePerSquareUnit);
private:
double valuePerSquareUnit_;
};
class Rectangle : public Shape {

本文深入探讨了C++中纯虚函数被调用导致的pure virtual function called异常,分析了构造函数、析构函数直接或间接调用虚函数的错误,并解释了悬空指针调用虚函数的问题。
4183

被折叠的 条评论
为什么被折叠?



