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