sólo quería hacer una simple pregunta - tengo una clase derivada de TLabel de la siguiente manera:sustituida y se constructora no anulado
TMyLabel = class (TLabel)
...
constructor Create(AOwner: TComponent); override;
end;
constructor TMyLabel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
{ some code }
end;
Ahora, Delphi me permite compilar las dos versiones con y sin el anulación . ¿Podrías explicar cuáles son las diferencias? Aparte de no poder solicitar mis propios parámetros en Create()
cuando se reemplazó. Gracias
Edit: Lo que quiero decir es - ¿cuál es la diferencia entre un virtual
y un non-virtual constructor descendiente? Siempre puedo llamar al constructor heredado por inherited Create()
, entonces, ¿cuál es el punto?
posible duplicado de [¿Necesito sobrecargar o reemplazar las palabras después de la declaración del constructor en la clase derivada?] (Http://stackoverflow.com/questions/360597/need-i-to-put-overload-or-override -words-after-the-constructor-declaration-in-de) –
El compilador le da una advertencia si no lo hace, ¿verdad? del duplicado vinculado; "Si no haces eso, el compilador probablemente te advierta que el constructor de TMinMatrix está" ocultando "el constructor de TMatrix. - Todavía tengo que encontrar una NECESIDAD práctica para ocultar un constructor de componentes, y TCOmponent en particular parece depender de un comportamiento virtual adecuado para Constructores y Destructores, por lo que, en general, con TComponent, en realidad está cerca de un error. –
Sí, lo hace. Podría estar 'escondiéndolo' en el sentido de que no es _directamente_ descendiente, pero como lo llamo 'heredado' de todos modos, ¿hace alguna diferencia? –