From: "Alex R. Mosteo" <devnull@mailinator.com>
Subject: Re: tagged record child: override constructor?
Date: Wed, 14 Sep 2005 11:28:40 +0200
Date: 2005-09-14T11:28:40+02:00 [thread overview]
Message-ID: <4327ED48.5000603@mailinator.com> (raw)
In-Reply-To: <87vf14him5.fsf@ludovic-brenta.org>
Ludovic Brenta wrote:
> Martin Krischik <krischik@users.sourceforge.net> writes:
>
>>That's because all class members are virtual in Ada.
>
>
> I think this needs to be elaborated on.
>
> All _primitive operations of a tagged type_ are _potentially_
> "virtual" in Ada. Each caller of such a primitive operation decides,
> at the call site, whether the dispatching is static or dynamic.
>
> In contrast, in (my recollection of) C++, all virtual methods dispatch
> dynamically from all call sites: the decision is not made at the point
> of call but at the point of definition of the method.
This is worth stressing. I was bitten by this distinction in cases like
this:
type Blah is tagged ...;
procedure Do_Something (B : Blah); -- Default processing,
-- To be overriden/extended by descendant types.
procedure Run (B : Blah) is
begin
...
Do_Something (B);
end Run;
If you make a descendant type (say Duh), the call inside Duh.Run will
not be dispatching, but will call the Blah.Do_Something.
This is plain vanilla consequence of what you say, but for newcomers to
Ada could be an easy mistake to made.
--
Take the Snape polls: http://snape.mosteo.com [Updated 16/05]
next prev parent reply other threads:[~2005-09-14 9:28 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-13 5:58 tagged record child: override constructor? sean.gilbertson
2005-09-13 6:39 ` David Trudgett
2005-09-13 7:32 ` Dmitry A. Kazakov
2005-09-13 7:56 ` tmoran
2005-09-13 15:23 ` sean.gilbertson
2005-09-13 17:37 ` Martin Krischik
2005-09-13 19:29 ` Ludovic Brenta
2005-09-14 7:49 ` Dmitry A. Kazakov
2005-09-14 9:05 ` Maciej Sobczak
2005-09-14 13:20 ` Dmitry A. Kazakov
2005-09-14 13:52 ` Hyman Rosen
2005-09-14 16:47 ` Dmitry A. Kazakov
2005-09-14 17:16 ` Hyman Rosen
2005-09-14 20:20 ` Dmitry A. Kazakov
2005-09-14 20:34 ` Georg Bauhaus
2005-09-14 20:56 ` Hyman Rosen
2005-09-15 7:31 ` Dmitry A. Kazakov
2005-09-15 13:19 ` Hyman Rosen
2005-09-15 13:45 ` Maciej Sobczak
2005-09-15 17:45 ` Dmitry A. Kazakov
2005-09-15 18:54 ` Hyman Rosen
2005-09-16 9:32 ` Dmitry A. Kazakov
2005-09-16 14:52 ` Hyman Rosen
2005-09-16 15:33 ` Jean-Pierre Rosen
2005-09-16 18:37 ` Hyman Rosen
2005-09-16 21:03 ` Dmitry A. Kazakov
2005-09-16 21:33 ` Hyman Rosen
[not found] ` <98ox2x9xvj9z.1uh92dslhvt4g.dlg@40tude.net>
2005-09-17 12:47 ` Georg Bauhaus
2005-09-17 15:56 ` Dmitry A. Kazakov
2005-09-14 16:14 ` Martin Krischik
2005-09-14 16:57 ` Dmitry A. Kazakov
2005-09-14 18:35 ` Martin Krischik
2005-09-14 9:28 ` Alex R. Mosteo [this message]
2005-09-14 16:10 ` Martin Krischik
2005-09-13 9:33 ` Georg Bauhaus
2005-09-13 16:37 ` Jeffrey Carter
2005-09-13 18:55 ` Robert A Duff
2005-09-13 22:18 ` Jeffrey Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox