I don't know delegate well but it looks like the original object and the delegated object are separate entities, i.e. instance variables and methods are still distinct. I noticed that if the klass pointer could be changed then the object would really become of a different class, but I don't know enough about how the methods and instance variables are indexed and if the child inheritor would be able to access them safely. Lisp CLOS objects can change class easily, I just hesitated to mention lisp, so I chose c instead :)