comp.lang.ada
 help / color / mirror / Atom feed
From: Francois Godme <fgodme@bigfoot.com>
Subject: Re: Constructors/Destructors in Ada95
Date: 2000/10/23
Date: 2000-10-23T00:00:00+00:00	[thread overview]
Message-ID: <39F4AE95.4DB04145@bigfoot.com> (raw)
In-Reply-To: 39F0A6C7.E592AFFB@averstar.com

I would like to add some other arguments not yet expressed:

   * against the non-primitive procedures used as constructors of limited
     instances like in Tucker Taft's proposal,
   * against the Adjust procedure and
   * against the Finalize procedure.

I. Non-primitive procedures used as constructors of limited instances:
As limited instances can't be initialized with record aggregates, it is
possible to write code which forgets to initialize all record fields. It was
already the case in Ada83 but only in the horizontal plane. With procedures, it
can now get wrong in the vertical plane along the class hierarchy if one forgot
to call one of the initializing procedures of its immediate super-class.
Programmers have also to remember to call the super-class procedure first as a
precaution before initializing extension record fields. Nothing insurmountable
I admit. If the language had constructors, the compiler could warn me when I
forgot something in the horizontal or the vertical plane. This will increase
safety.

This doesn't apply to non-limited types if they are initialized only with
aggregates and functions. No procedures.

II.The Adjust procedure:
Efficiency concerns may be raised against the sequence: Finalize (Target);
shallow copy Source into Target; Adjust (Target);.

In the Adjust procedure, control is given to perform, for instance, a deep copy
of Source into Target. One can easily devise situations where Finalize of
Target will have to deallocate memory which will be immediately needed and
reallocated by Adjust of Target.

III. The Finalize procedure:
The programmers are responsible in the Finalize procedure to call last the
immediate super-class Finalize procedure. As the notion of immediate
super-class does not exist in the language, it is not possible to write code
that will always call the Finalize procedure of the immediate super-class.





  parent reply	other threads:[~2000-10-23  0:00 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-10-18  0:00 Constructors/Destructors in Ada95 Francois Godme
2000-10-19  0:00 ` Ted Dennison
2000-10-19  0:00 ` tmoran
2000-10-19  0:00   ` Francois Godme
2000-10-19  0:00     ` Ted Dennison
2000-10-20  0:00     ` Tucker Taft
2000-10-20  0:00       ` Francois Godme
2000-10-21  0:00         ` Marin David Condic
2000-10-23  0:00       ` Francois Godme [this message]
2000-10-24  0:00         ` Ray Blaak
2000-10-25  0:00           ` Marin David Condic
2000-10-25  0:00             ` dmitry6243
2000-10-25  0:00               ` mark.biggar
2000-10-26 11:44                 ` dmitry6243
2000-10-26 13:25                   ` Robert A Duff
2000-10-27  8:10                     ` dmitry6243
2000-10-26 17:55                   ` tmoran
2000-10-27  8:10                     ` dmitry6243
2000-10-26 21:31                 ` Tucker Taft
2000-10-27  8:46                   ` dmitry6243
2000-10-25  0:00               ` Pascal Obry
2000-10-26  0:00                 ` dmitry6243
2000-10-27  7:12             ` Ray Blaak
2000-10-25  0:00           ` Francois Godme
2000-10-27 18:11           ` Francois Godme
2000-10-30 11:36             ` Robert A Duff
2000-10-30 22:03               ` dale
2000-10-22  0:00     ` rwilson007007
2000-10-22  0:00       ` Francois Godme
2000-10-24  0:00         ` rwilson007007
2000-10-19  0:00 ` Marin David Condic
  -- strict thread matches above, loose matches on Subject: below --
2000-10-29 22:51 rwilson007007
2000-10-30  4:03 ` Ray Blaak
2000-10-30 12:13 ` Marin David Condic
2000-10-30 16:39   ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox