New()

Z Delphi & Pascal (česká wiki)
Verze z 21. 9. 2012, 14:33, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (1 revízia: Objektovo orientované programovanie)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání
procedure New( var P: Pointer [; constructor ]  );

Procedúra New() inicializuje inštanciu objektu typu, na ktorý ukazuje pointer “P”. Pridelí miesto v dynamickej pamäti podľa typu “P”. Ak je inicializovanie zložitejšie, bežne sa na túto činnosť používa zvláštna metóda objektu – konštruktor, ktorý sa uvádza ako nepovinný druhý parameter.


Výstraha!
Špecifikácia formálneho parametra (len) ako Pointer je zavádzajúca! V Turbo Pascale je možné deklarovať premennú ako pointer bezudania typu:
var P:  Pointer;  

ale v procedúre New() musí byť prvý parameter konkrétneho typu pointer na nejaký definovaný objekt (alebo záznam), ktorého dĺžka je známa a ktorú Pascal použije pri určovaní veľkosti pridelenej pre objekt (záznam). (Programátor v podobnej situácii, v príkaze GetMem() použije štandardnú funkciu SizeOf(), ktorá vráti dĺžku objektu (záznamu, inej entity), ktorá bola parametrom SizeOf .


Ospravedlnenie
Hovoríme o dynamickej pamäti . Namiesto toho by bolo vhodnejšie hovoriť o dynamicky prideľovanej pamäti. Dynamická pamäť je terminus technicus z technického vystrojenia počítačov (hardware) a znamená niečo úplne iné. Hovoriť o dynamickej pamäti v Turbo Pascale je však vžitý zlozvyk.