[
Lists Home |
Date Index |
Thread Index
]
- From: James Clark <jjc@jclark.com>
- To: Steinar Bang <sb@metis.no>
- Date: Fri, 03 Dec 1999 19:30:57 +0700
Steinar Bang wrote:
>
> >>>>> James Clark <jjc@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@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@ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)
|