On 06/02/16 13:14, Marcin Baczyński wrote:
2016-06-02 11:55 GMT+02:00 K <ky...@rol.ru>:
Hi,
My question is what if a compiler will generate a virtual destructor (or
convert a nonvirtual to virtual) in a base class if the base class has at
least one virtual function and classes down in the hierarchy have
nontrivial destructors? In other words make a compiler responsible for
proper destruction of a polymorphic object.
Are there any serious pros against this?
One thing that immediately comes to mind is the compiler would need to
know about those derived classes and their destructors when compiling
the base class.
Yes, this looks like a problem, but then there is a much simple
solution: if base class have a virtual function then it must have a
virtual destructor and if a base class has a virtual destructor then
every class in a hierarchy will have a pointer for destructor in vtbl.
This suggestion can look stupid
but just think how many type strokes and hours in searching of memory leaks
this could save.
-Wnon-virtual-dtor or -Weffc++ could be of some help there.
Yes, I know -Wall also gave a proper warnings .
I wanted to send this as a suggestion to @isocpp.org mailing list, but
then decided to ask people who work on compiler for their opinions.
This thing with a virtual destructors bothers people for decades and
maybe it is time to make a compiler do proper destruction in this case.
Kirill.