From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: abstract sub programs overriding
Date: Tue, 09 Mar 2004 15:49:45 +0100
Date: 2004-03-09T15:49:45+01:00 [thread overview]
Message-ID: <5cmr40t76va200betf07b7bd6er05ltto9@4ax.com> (raw)
In-Reply-To: 1078839257.157439@master.nyc.kbcfp.com
On Tue, 09 Mar 2004 08:34:03 -0500, Hyman Rosen <hyrosen@mail.com>
wrote:
>Dmitry A. Kazakov wrote:
>> Yes, this is because C++ OO model is inconsistent.
>
>This is literally true, if by consistent you mean "objects have the same
>type from the start of construction to the end of destruction".
>
>> Nothing may change the object type
>
>Obviously this is not a fixed law of nature,
Well, it is a philosophical question... (:-))
>but merely a choice. C++ has chosen otherwise.
>> otherwise artifacts will inevitable show this or that way.
>
>The artifacts that show up in the C++ model is that abstract methods may
>be invoked by dispatching. The artifact that is avoided by the C++ model
>is that methods are never invoked on unconstructed objects.
The problem is that to construct an object (A) /= to construct the
dispatching table of its methods (B). C++ choice is very close to: A
implies B. Obviously it is a bad choice from many points of view. One
of them is safety, as the case shows.
>It's a perfectly
>reasonable tradeoff, since detecting dispatch to abstract methods is trivially
>easy. It's the job of constructors to make an object consistent.
True, but in practice it is difficult to view object construction /
destruction as monolitic or error free. I think that probably two
stage construction is needed. The first one for type specific
construction, the second for class-wide one (at least to have
dispatching in constructors)
>Other methods
>should never have to worry that they're being called with inconsistent state.
--
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de
--
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de
next prev parent reply other threads:[~2004-03-09 14:49 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-02 19:01 abstract sub programs overriding Evangelista Sami
2004-03-03 1:43 ` Stephen Leake
2004-03-05 15:02 ` Evangelista Sami
2004-03-05 16:15 ` Marius Amado Alves
2004-03-08 18:54 ` Adam Beneschan
2004-03-08 23:42 ` Marius Amado Alves
2004-03-05 16:26 ` Marius Amado Alves
2004-03-06 9:31 ` Simon Wright
2004-03-06 15:18 ` Evangelista Sami
2004-03-06 19:09 ` Marius Amado Alves
2004-03-07 12:35 ` Simon Wright
2004-03-07 13:39 ` Marius Amado Alves
2004-03-08 19:08 ` Adam Beneschan
2004-03-08 20:03 ` Hyman Rosen
2004-03-09 8:51 ` Dmitry A. Kazakov
2004-03-09 13:34 ` Hyman Rosen
2004-03-09 14:49 ` Dmitry A. Kazakov [this message]
2004-03-09 15:14 ` Hyman Rosen
2004-03-09 15:56 ` Dmitry A. Kazakov
2004-03-09 16:32 ` Hyman Rosen
2004-03-10 9:32 ` Dmitry A. Kazakov
2004-03-10 13:08 ` Hyman Rosen
2004-03-10 14:58 ` Robert I. Eachus
2004-03-10 16:00 ` Hyman Rosen
2004-03-10 18:07 ` Robert I. Eachus
2004-03-10 20:04 ` Hyman Rosen
2004-03-11 2:43 ` Robert I. Eachus
2004-03-11 13:55 ` Hyman Rosen
2004-03-12 23:02 ` Robert I. Eachus
2004-03-14 21:33 ` Hyman Rosen
2004-03-15 5:59 ` Robert I. Eachus
2004-03-15 14:39 ` Hyman Rosen
2004-03-16 16:16 ` Robert I. Eachus
2004-03-16 16:51 ` Hyman Rosen
2004-03-16 19:54 ` Hyman Rosen
2004-03-16 23:16 ` Randy Brukardt
2004-03-17 1:54 ` Robert I. Eachus
2004-03-16 23:14 ` Randy Brukardt
2004-03-17 2:43 ` Robert I. Eachus
2004-03-17 17:40 ` Randy Brukardt
2004-03-18 2:39 ` Robert I. Eachus
2004-03-18 5:57 ` Randy Brukardt
2004-03-18 15:03 ` Hyman Rosen
2004-03-18 20:32 ` Randy Brukardt
2004-03-19 3:59 ` Hyman Rosen
2004-03-19 19:37 ` Randy Brukardt
2004-03-16 6:00 ` Randy Brukardt
2004-03-11 10:09 ` Dmitry A. Kazakov
2004-03-11 14:10 ` Hyman Rosen
2004-03-11 14:59 ` Dmitry A. Kazakov
2004-03-11 15:40 ` Hyman Rosen
2004-03-11 16:28 ` Dmitry A. Kazakov
2004-03-11 17:26 ` Hyman Rosen
2004-03-12 8:53 ` Dmitry A. Kazakov
2004-03-12 13:09 ` Hyman Rosen
2004-03-12 14:00 ` Dmitry A. Kazakov
2004-03-12 14:56 ` Hyman Rosen
2004-03-12 18:19 ` Dmitry A. Kazakov
2004-03-12 18:34 ` Hyman Rosen
2004-03-12 20:05 ` Georg Bauhaus
2004-03-13 10:12 ` Dmitry A. Kazakov
2004-03-12 18:07 ` Robert I. Eachus
2004-03-10 15:51 ` Evangelista Sami
2004-03-11 1:38 ` Dan Eilers
2004-03-06 23:20 ` Dan Eilers
2004-03-03 12:00 ` Marius Amado Alves
2004-03-13 7:51 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox