Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
ы   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.181 c
2-1172575174
trubin
2007-02-27 14:19
2007.03.18
PasswordChar не работает


2-1172162880
lowkey
2007-02-22 19:48
2007.03.18
ShowWindow


3-1166422900
Tex
2006-12-18 09:21
2007.03.18
Изменение цвета текущей строки DBGrid a


15-1171822276
Kerk
2007-02-18 21:11
2007.03.18
Простите и вы меня чтоль


15-1171898141
DillerXX
2007-02-19 18:15
2007.03.18
Казино рояль





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский