On 2011-08-29 01:58:30 +0000, Jonathan M Davis <jmdavisp...@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.for...@michelf.com
http://michelf.com/

Reply via email to