En C++ o los lenguajes con
recoleccion de basura es seguro tener operadores de clase.
En Delphi que no es necesariamente el caso, puede haber muchas fugas de memoria, y creo que ese es el motivo por el cual no tenemos a nuestra disposicion sobrecarga de operadores. Al menos no para el compilador para
Windows; los que implementan ARC, como señalo
Al, si que permiten la sobrecarga
Los
record son un caso especial porque Delphi se encarga de manejar la memoria por nosotros y entonces no hay problema
A mi tambien siempre me hacian mucha falta en Delphi.. seria muy bueno poder tener esta sintaxis de manera oficial, por lo menos en interfaces que si implementan el mecanismo de contador de referencias
Otro detalle es que no necesariamente hay que usar un ayudante de clase como esta mas arriba. Es posible utilizar una subclase para lograr el mismo efecto; o tambien el viejo truco de la clase interpuesta
Código Delphi
[-]
TStringListEx = class(TStringList)
public
class function &&op_In(const Value: string; Target: TStringListEx): Boolean; static;
class function &&op_LogicalOr(A, B: TStringListEx): TStringListEx; static;
end;
Código Delphi
[-]
TStringList = class(Classes.TStringList)
public
class function &&op_In(const Value: string; Target: TStringList): Boolean; static;
class function &&op_LogicalOr(A, B: TStringList): TStringList; static;
end;