New(): Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
 
m (1 revízia: Objektovo orientované programovanie)
 
(Žádný rozdíl)

Aktuální verze z 21. 9. 2012, 14:33

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.