------- 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

Reply via email to