TITLE: Pure virtual methods may have implementations This information was take from the ARM (Annotated C++ Reference Manual), page 214-216. Pure virtual methods are allowed to have an implementation (contrary to popular belief). For example, class A { virtual void f () = 0; }; void A :: f () { ... } Note that the method f may be called explicitly because this bypasses the virtual mechanism. We try the following as constructors: A() { f(); // illegal, results undefined } A() { A::f(); // legal } [There is some debate about what constitues appropriate use of a pure virtual function with implementation, but it is an argument of convention.]