[ERROR]
Pure virtual functions can be called from a constructor of an abstract class; the effect of calling a pure virtual function directly or indirectly for the object being created from such a constructor is an error.
class A{
public:
virtual void f(void) = 0;
A(){
f();
}
};
A pure virtual can be defined. It can be called using explicit qualification only.
class A{
public:
virtual void f(void) = 0;
A(){
A::f();
}
};
void A::f(void){ // defined somewhere
//...
}