Saaa wrote: > "Daniel Keep" <daniel.keep.li...@gmail.com> wrote in message > news:h88cck$1or...@digitalmars.com... >> >> Saaa wrote: >>> abstract class C >>> { >>> int method(); >>> } >>> class C2:C >>> { >>> int method() return 2; >>> } >>> class C3:C >>> { >>> int method() return 3; >>> } >>> int delegate() deleg; >>> void main() >>> { >>> C c; >>> C2 c2 = new C2; >>> C3 c3 = new C3; >>> c=c2; >>> deleg = &c.method; >>> writefln(deleg()); // 2 >>> c=c3; >>> writefln(deleg()); // 2 >>> // I expected this to write 3, why is this not so? >> Because you didn't reassign deleg. > but isn't deleg pointing to c's method?
Yes... just because you change what c points to doesn't magically rewrite all other references. You might want to read http://digitalmars.com/d/1.0/type.html#delegates