Ale i Delphi si mohu prvek pole uložit do další proměnné, nebo třeba jen adresu na něj. Nikdo neřekl, že to nejde. Jen k té adrese nemohu jednoduše přičíst číslo.
Pokud chci zjistit vzdálenost prvků pole od sebe, prostě odečtu jejich indexy. Stejně tak s indexy lze provádět jakékoliv matematické operace včetně sčítání a odčítání; jsou to prosté integery. Takže posun o 2 prvky dál je jen I+2.
Dynamická pole nejsou třídy, ale pouze alokovaná oblast paměti, kterou kompilátor zprostředkovává jako pole záznamů. To že si to vyloží jako pole (a zná počet prvků) je díky tomu, že se velikost pole nastavuje speciální procedurou SetLength (není to metoda). Ta alokuje potřebnou paměť podle typu, který bude v poli uložen.
Ale souhlasím, že kontrola rozsahu má jistou režii. Proto je implicitně vypnutá.