Re: Вопрос по категории указателей, ссылок и массивов
От: AlexGin Беларусь  
Дата: 18.11.21 20:05
Оценка: 3 (2) +1
Здравствуйте, velkin, Вы писали:

V>Вопрос такой, если соотнести типы по категориям:


V>1) Встроенные типы: логический (bool), символьный (char), целый (int), вещественный (double), пустой (void)

Это POD (plain old data) типы данных:
https://en.cppreference.com/w/cpp/named_req/PODType

V>2) Пользовательские типы: перечисляемый (enum), объединяющий (union), структурный (struct), объектный (class)

Как-то всё в одну кучу ты сложил.
Исторически так уж повелось, что class объединяет данные и методы работы с ними. Это выделяет его из данного ряда.

V>3) ??? типы: указательный (*), ссылочный (&), массивный ([])

Первые два — типы косвенного обращения к данным.
Третий — простейшая коллекция. Её реализация при помощи указателя в СИ — издержки технологий 1970-х.

V>Тогда как обозвать третью категорию. Вроде бы понятно, что там работа идёт с адресацией в памяти.

Это некоторое допущение. В своё время (когда аллокация в памяти была вручную), оно было актуально.
По возможности следует абстрагироваться от понятия "управление_памятью".
Теперь в C++ есть smart-pointers, позволяющие нам абстрагироваться.

V>Могу их обозвать адресными типами, но по сути это откровенная отсебятина. Впрочем она здесь не первая, и если кто-то классифицирует типы из этих категорий по другому отпишитесь как именно.

Когда занимаешся практикой разработки, меньше всего заморачиваешся на этой теории, но если уже говорить об этом —
то здесь три разные сущности:
— указатель (как адрес в памяти)
— ссылка (как алиас объекта) не даром в C++ она не может быть нулевой
— массив — как разновидность коллекции объектов.

V>Или вот я обозвал структуру данных struct структурным типом, а class объектным, даже если на нём и можно создать чисто абстрактный интерфейс.

А тут уже некоторое недопонимание терминологии: т.к. в C++ доступно множественное наследоваине реализаций (что не есть хорошо), то
абстрактный базовый класс применяют как костыль как интерфейс.

V>Ещё вопрос в том, понимают ли другие люди фундаментальные понятия по другому. То есть class это не объектный тип, а нечто другое, или struct не структурный тип и всё в таком роде. Или может быть есть более изящное название массивного типа, то есть чтобы там вначале тоже было прилагательное. В общем отпишитесь кто что думает.

Так ведь "массивного" типа по существу и не надо. Надо — нормальные коллекции.
Важно, что эти коллекции поддерживают Generics (обобщённые типы данных: C++ templates).

P.S. Вот интересная (имхо) статья:
https://mariusbancila.ro/blog/2020/08/10/no-more-plain-old-data
Отредактировано 18.11.2021 20:12 AlexGin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.