Neu ohne Constructor
Delphi-Quellcode:
function CTRL_DriveListCreate(): ISkinDriveList; stdcall;
var
SkinDriveList : TSkinDriveList;
begin
SkinDriveList := TSkinDriveList.Create;
result := SkinDriveList;
end;
Du kannst ruhig auch hier direkt an "result" zuweisen.
Zitat:
Dann stellt sich aber eine andere Frage was ist dann mit destructor wenn vorher kein Constructor aufgerufen wurde.
Und auch hier wird intern von Delphi inherited aufgerufen oder nicht ?
OOP Grundlagen. Es wird
immer ein Konstruktor aufgerufen, wenn man ein Create() macht. Wenn man in seiner Ableitung keinen selbst erstellt, wird der der Elternklasse genommen. Quasi ein implizites inherited (wenn technisch auch nicht ganz gleich, aber so kann man sich es mal vorstellen). Der Destruktor gehorcht der selben Mechanik. Da man aber beide immer zwangsweise von irgendwo erbt, ist man nicht zum Neuschreiben gezwungen, und man muss auch nicht zwangsweise paarweise implementieren. (Man kann durchaus nur einen Destruktor haben.) Vererbung macht u.a. genau dies möglich, bzw. ist das ein Fundament der
OOP.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)