------- Comment #2 from yuriry at gmail dot com 2008-03-31 07:10 ------- Hi Björn,
Thank you for the link and setting me straight. You are correct, implementation of a pure virtual function by the class that declares it makes sense. It is just the class itself remains abstract. Earlier today I had a problem with dynamic library loading and it disappeared only after I removed an implementation of a pure virtual method from a declaring class. I thought this was a problem, but it looks like I need to look more at what was happening. Regards, Yuri (In reply to comment #1) > Hi yuri, > > I think, this is perfectly correct code and GCC is right in accepting it. > First > of all, see "Effective C++" issue 14 about the pure virtual destructor. Then > see here: > > http://en.wikipedia.org/wiki/Virtual_function#Abstract_classes_and_pure_virtual_functions > > <cite> > Although pure virtual methods typically have no implementation in the class > that declares them, pure virtual methods in C++ are permitted to contain an > implementation in their declaring class, providing fallback or default > behaviour that a derived class can delegate to if appropriate. > </cite> > > Regards, > Björn Herwig > > (In reply to comment #0) > > GCC compiles the code below without any error: > > > > //---------------------------------- > > class A { > > protected: > > virtual void foo() const = 0; > > }; > > > > // Defining pure virtual functions should not be allowed. > > void A::foo() const > > { > > } > > //---------------------------------- > > > -- yuriry at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35772