SAX/C++: First interface draft

James Clark jjc at jclark.com
Fri Dec 3 12:37:13 GMT 1999


Steinar Bang wrote:
> 
> >>>>> James Clark <jjc at jclark.com>:
> 
> > One interesting issue is whether to provide a virtual destructor.  I
> > think the safest solution is not to provide a virtual destructor but
> > instead to declare but not define a private operator delete.  This
> > makes it a compile time error to do:
> 
> >   DTDHandler *p;
> >   // ...
> >   delete p;
> 
> Hm... not defining a virtual destructor for a class with virtual
> functions gives me warnings in "gcc -Wall".  Will a private operator
> delete do anything about these warnings, I wonder...?

If not, gcc should be fixed, because there's no legitimate reason to
give a warning. I got this technique from

  http://www.develop.com/dbox/cxx/SmartPtr.htm#Obvious

I've also verified that this complies with the C++ standard (the
relevant clause is 12.5p4).  gcc 2.95.1 correctly gives a compile-error
if you try to delete such a class. Visual C++ 6 doesn't catch this at
compile, but you'll still get a link-time error.

The other possible technique is a protected virtual destructor with an
empty implementation.

James



xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list