comp.lang.ada
 help / color / mirror / Atom feed
* Overloading and polymorphism
@ 1994-12-25 18:56 Moti Ben-Ari
  1995-01-03 20:41 ` Robert I. Eachus
  0 siblings, 1 reply; 2+ messages in thread
From: Moti Ben-Ari @ 1994-12-25 18:56 UTC (permalink / raw)


Unfortunately I have been trying to learn C++ in detail and they do
a lot of worrying about obscure interactions between overloading
and dynamic polymorphism (a function in a derived class
that seems to overload a function in the base class actually hides it;
dispatching on an object pointed to by a pointer calls the function
of the pointer class if the function is not virtual).

Are there any similar problems in Ada 9X or does everything
work out OK because each call is dispatched on a tag?

Thanks
Moti Ben-Ari



^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Overloading and polymorphism
  1994-12-25 18:56 Overloading and polymorphism Moti Ben-Ari
@ 1995-01-03 20:41 ` Robert I. Eachus
  0 siblings, 0 replies; 2+ messages in thread
From: Robert I. Eachus @ 1995-01-03 20:41 UTC (permalink / raw)


In article <3dkf92$i0s@israel-info.datasrv.co.il> benari@zeus.datasrv.co.il (Moti Ben-Ari) writes:

 > Are there any similar problems in Ada 9X or does everything
 > work out OK because each call is dispatched on a tag?

   Most of the problems are avoided in Ada 9X, but mostly due to
strong typing.  In fact, in many cases in Ada 9X, calls which appear
to be dispatching in the source code can be analyzed at compile time
and the dispatch table bypassed.  In the cases where this does not
happen, if there is a possibility of a type violation, the langauge
does specify run-time checking.  (The freezing rules also help.  Since
a primitive subprogram declaration cannot occur after the type is
frozen, dispatching operations, which must be primitive, must be
declared relatively soon after the declaration of the type.)

   Having said all that it is still possible to create cases in Ada 9X
where the dispatch is not to the "expected" routine.  But in general
you have to know a lot to create the problem cases, they don't happen
by accident.  (In fact I suspect that most of the cases are so
obviously pathological that good compilers will generate warning
messages--not for the call, but for the overloading.  AFAIK, the
problem only occurs when the scope of a dispatching subprogram does
not match the scope of the type being dispatched on, and, yes, I
realize that IS very hard to do.)

--

					Robert I. Eachus

with Standard_Disclaimer;
use  Standard_Disclaimer;
function Message (Text: in Clever_Ideas) return Better_Ideas is...



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1995-01-03 20:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1994-12-25 18:56 Overloading and polymorphism Moti Ben-Ari
1995-01-03 20:41 ` Robert I. Eachus

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