Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Сассерович Гость
|
Добавлено: Пт Май 07 2004 02:55 Заголовок сообщения: Обсудим Structure, Class, и т.д., Где принципиальное отличие |
|
|
Тут меня посетила мысля... Вот нас учили-учили... Рассказывали стачала про структуру, абстрактные типы данных, наконец перешли на классы (всё это разумеется не без С++ и Паскаля) ... Учили мы ссылки на адреса, потом указатели, потом перешли на Win32, где появились ещё дескрипторы и идентификаторы...
Я недоумевал на Втором курсе....
"Я могу в Си реализовать одно и тоже с помощью классов и структур, но в чём же их принципиальное отличие..?"
=. 1 .=
...Прошу разъяснить мне этот вопрос, если кто точно уверен в этой принципиальной разнице...
=. 2 .=
И ещё.... на закуску... Как сами понимаете, В чём разница между ссылкой, указателем, дескриптором и идентификатором?? |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Пт Май 07 2004 09:04 Заголовок сообщения: |
|
|
Насколько мне известно, в далекой античности серьезные различия были. А сейчас их практически нет. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Пт Май 07 2004 14:44 Заголовок сообщения: |
|
|
=. 1 .=
В структуре по умолчанию данные public а в классе - private. Поля структуры можно инициализировать так
struct A
{ int a, b, c; };
A s = { 1, 2, 3 };
а класса - нет.
Если хочешь писать данные в файл, более семантически правильно объявлять их как структуры, и при этом, разумеется, не суй туда виртуальных методов.
=. 2 .=
Это совсем разные вещи.
Указатель это переменная хранящая адрес в памяти.
Ссылка это не переменная. Это дополнительная возможность языка, эдакий псевдомакрос если хотите, позволяющий обращаться к объявленной ранее переменной, которая может находиться где угодно, как к переменной объявленной в текущем блоке. Без ссылок легко обойтись указателями, просто писать а=5 приятнее чем *а=5.
Дескриптор это уникальный номер который выдаётся некоторой сущности при её создании програмным блоком который обслуживает эти сущности. В последствии обращаться к данной сущности можно указав этому блоку нужную операцию над сущностью, её дескриптор и если нужно дополнительные данные. Вот к примеру файлы в операционной системе. При создании (открытии) файла, операционная система заводит структурину со множеством полей хранящих такие вещи как способ открытия файла (read, write и т.п.) его расположение на винте или на флопике, или вообще в сети. Словом, конечному пользователю эти данные давать опасно, если они вообще кому-то нужны. Поэтому эти структуры скрыты в ядре ОС, а при их создании заводится дескриптор (число типа int) которое выдаётся пользователю и ряд интерфейсных функций способных по дескриптору отыскать нужную структуру и выполнить нужное действие.
А идентификатор - это просто человеческое название (если программист удасужился сделать его человеческим, если нет - то нечеловеческое) переменной в исходнике. |
|
Вернуться к началу |
|
|
droopy Гость
|
Добавлено: Пт Май 07 2004 14:50 Заголовок сообщения: |
|
|
grayrat писал(а): | =. 1 .=
Ссылка это не переменная. |
это еще почему. очень даже переменная которая работает как
самораскрывающийся указатель. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Пт Май 07 2004 15:57 Заголовок сообщения: |
|
|
Коротко и точно
Согласен. Скорее всего так и будет при компиляции. |
|
Вернуться к началу |
|
|
|