Jonas Maebe wrote:
If you had two different create constructors (for whatever reason),
might you not also need two different destroy destructors?
No, the default destructor should always free all resources,
regardless of how the class instance was created. Otherwise, it would
also make your code more complex, because throughout the code you
would have to track how the instance was created, so that in the end
you could call the correct destructor.
I think there's something even more subtle than that. If a constructor
blows up and raises an exception, the destructor Destroy is called
automatically to clean up the partially created class, before the
exception is handled. So, it's not just .free that is hardcoded to call
destroy. IOW it is an extremely bad idea to have a destructor other than
Destroy for classes and IMO shouldn't be allowed by the language.
However, having multiple constructors is perfectly fine, as long as the
destructor is only one.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal