Pure virtual functions (when we set = 0
) can also have a function body.
What is the use to provide a function body for pure virtual functions, if they are not going get called at all?
Pure virtual functions (when we set = 0
) can also have a function body.
What is the use to provide a function body for pure virtual functions, if they are not going get called at all?
Your assumption that pure virtual function cannot be called is absolutely incorrect. When a function is declared pure virtual, it simply means that this function cannot get called dynamically, through a virtual dispatch mechanism. Yet, this very same function can easily be called statically, non-virtually, directly (without virtual dispatch).
In C++ language a non-virtual call to a virtual function is performed when a qualified name of the function is used in the call, i.e. when the function name specified in the call has the
<class name>::<function name>
form.For example
For most pure virtual functions, you'd be right. However, for a pure virtual destructor, it's actually important to define a corresponding destructor implementation:
see here.