Ok, I've just learned something. A pure virtual function must be declared as follows:
class Abstract
{
public:
virtual void pure_virtual() = 0;
};
It may have a body, although it is illegal to include it at the point of declaration. This means that to have a body the pure virtual function must be defined outside the class. Note that even if it has a body, the function must still be overridden by any concrete classes derived from Abstract
. They would just have an option to call Abstract::pure_virtual()
explicitly if they need to.
The details are here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…