is this a poly Polymorphism?

Michel Fortin michel.fortin at michelf.com
Mon Aug 29 04:09:00 PDT 2011


On 2011-08-29 01:58:30 +0000, Jonathan M Davis <jmdavisProg at gmx.com> said:

> On Monday, August 29, 2011 04:50:09 hhaammaadd wrote:
>> import std.stdio;
>> class employee {
>> void work() {
>> writeln("I am employee");
>> }
>> }
>> 
>> class manager: employee {
>> void work() {
>> writeln("I am manager");
>> }
>> }
>> 
>> 
>> void main() {
>> employee e1 = new manager;//here
>> e1.work();
>> 
>> manager m3 = new manager;//--|here
>> employee *e2 = &m3;//--------|
>> e2.work();
>> 
>> 
>> }
> 
> Pointers are not polymorphic in D. Class references are, but if you have a
> pointer to a class, it assumes that the type is exactly that type and
> determines its function calls at compile time rather than at runtime.

Actually, a pointer to a class is really a pointer to a reference to an 
object, since the reference is always with a class type. So "employee 
*" is in reality a pointer to a reference to an employee object.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d-learn mailing list