Why isn't operator overloading available for classes in Delphi?
I've always wondered about this for a bit, bu开发者_开发知识库t why is operator overloading not available for classes in Delphi?
I remember reading an answer once while on the run, and it said it would come in conflict with something, but I can't remember much. As far as I can tell, only the implicit operator may cause a bit of problems since classes are stored on the heap and assigning is actually a copy of the heap address (basically copying pointers).
Close. It's because objects are reference types and the memory is managed manually. So if you said myResult := myObject1 + myObject2 + myObject3;
, you'd have to create an intermediate object somewhere in there, and there's no code to free it, so you get memory leaks.
You can have operator overloading for classes, but only for the NextGen compiler where classes use ARC.
See: http://blog.marcocantu.com/blog/class_operators_delphi.html
This was introduced in XE5, see: List of Delphi language features and version in which they were introduced/deprecated
Mason Wheeler says that it's impossible because intermediate object management.
But according to Embarcadero documentation, class operators where possible with Delphi 2009.
RAD Studio 2009 - Operator Overloading New Delphi language features since Delphi 7
精彩评论