![]() |
Массив записей = массив указателей?
Заметил в мп такую... особенность:
Код:
program NewProject; |
Ответ: Массив записей = массив указателей?
Не баг и не фича, а особенности реализации, так сказать.
Записи (как типы) - отдельные классы, переменные данного типа - экземпляры класса, так что копируя переменную (т.е. экземпляр класса) мы копируем не только поля, а всю структуру в целом, и указатели тоже. Не знаю, предвидели ли разработчики такой эффект, но обойти его можно, только копируя поля вручную. |
Ответ: Массив записей = массив указателей?
То есть все-таки в массиве хранятся не сами записи (экземпляры класса), а указатели на них? И если так - можно ли это как-нибудь использовать для реализации динамических массивов?
|
Ответ: Массив записей = массив указателей?
Хранятся экземпляры класса, массив a:array[1..10] of r; создается как a = new R_1[10];, правда, там используется еще какой-то странный массив, его роль мне непонятна, но копирование и присвоение значений производится без его использования. просто, как я понимаю, экземпляр класса содержит в себе указатель на данные в памяти, и копируя экземпляр мы копируем и этот адрес.
|
Ответ: Массив записей = массив указателей?
Цитата:
Код:
program NewProject; И при пересылке из одного массива в другой тоже указатель копируется: Код:
program NewProject; |
Ответ: Массив записей = массив указателей?
Тогда вообще непонятно, как оно работает, разбираться надо...
|
Часовой пояс GMT +4, время: 13:05. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot