Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.18;
Скачать: CL | DM;

Вниз

классы и записи   Найти похожие ветки 

 
ы   (2007-02-27 20:16) [0]

Скажите пожалуста какая разница создать свой класс или запись
в чем будут отличия
буду искрене признателен


 
Аноним   (2007-02-27 20:32) [1]

Если упрощенно:
1. Память под запись выделяется и освобождается компилятором, для класса это необходимо делать руками
2. Записи нельзя наследовать.
(учитывая то, что в D2006 записи стали поддерживать методы идентификаторы видимости, свойства, и даже появилась возможность делать к ним хелперы, отличия и правда сократились)

Да пожалуй и все.


 
ы   (2007-02-27 20:37) [2]

ууу и все.
всеравно спасибо


 
evvcom ©   (2007-02-28 10:24) [3]

> [1] Аноним   (27.02.07 20:32)
> 1. Память под запись выделяется и освобождается компилятором,
> для класса это необходимо делать руками

Ну ты загнул! :)

Запись содержит только данные, память под нее можешь выделить как вручную, используя указатели на запись, так и автоматом просто объявив переменную.
Класс же - это не только данные, но и свойства, методы и события для работы с ними. Память выделяется конструктором, реализованным в данном классе, который необходимо вызывать для каждого нового объекта.


 
Аноним   (2007-02-28 11:40) [4]


> evvcom ©


> Запись содержит только данные

Не только. Еще методы и свойства (см. последние нововведения)

> память под нее можешь выделить как вручную, используя указатели
> на запись


Это не относится к записям, это относится к указателям.


> Память выделяется конструктором


Память конструктором не выделяется


 
evvcom ©   (2007-02-28 14:09) [5]

> [4] Аноним   (28.02.07 11:40)
> (см. последние нововведения)

да, забыл об этом упомянуть

> Это не относится к записям, это относится к указателям.

Именно к записям. Память под указатель будет выделена автоматически, например, в стеке, стоит только упомянуть переменную-указатель, а под саму запись в этом случае память придется выделять руками.

> Память конструктором не выделяется

Хорошо, память выделяется в коде, который выполняется непосредственно перед исполнением пользовательского кода конструктора. Но так или иначе, он все же скорее относится к конструктору, нежели к чему-то другому.


 
Аноним   (2007-02-28 14:19) [6]


> evvcom ©


> Именно к записям. Память под указатель будет выделена автоматически,
>  например, в стеке, стоит только упомянуть переменную-указатель,
>  а под саму запись в этом случае память придется выделять
> руками.


ну при чем тут записи. При объявлении переменной типа PByte произойдет ровно то же самое - память под указатель (4 байта) выделится автоматически (например в стеке), а память под предполагаемое содержимое (1 байт) надо выделать руками. Так что именно тема записей в данном контексте отсутствует.


> Хорошо, память выделяется в коде, который выполняется непосредственно
> перед исполнением пользовательского кода конструктора


Память выделяется в виртуальном классовом методе NewInstance (или, как вариант, не выделяется, а возвращается указатель на какой то уже "готовый" блок).

С записями все несколько хуже - там нельзя управлять самим процессом выделения памяти (впрочем, в реальной жизни изменять поведение по умолчанию для объектов приходится крайне редко), но зато можно также использовать конструктор, который занимается тем, чем и должен - инициализацией полей данных.



Страницы: 1 вся ветка

Текущий архив: 2007.03.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.102 c
2-1172314035
Alex7
2007-02-24 13:47
2007.03.18
TDBLookupComboBox


2-1172060356
Raptoridze
2007-02-21 15:19
2007.03.18
добавить пункт меня


15-1172180996
wp2
2007-02-23 00:49
2007.03.18
Где именно нулевая дорожка?


3-1166619774
novill
2006-12-20 16:02
2007.03.18
Как в одном запросе выдать несколько дубликатов записей


4-1162494428
вп
2006-11-02 22:07
2007.03.18
Как можно выделить содержимое окна консольного приложения