|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||||||
В чем преимущество Структур над Классами?20.09.2025, 07:54. Показов 5586. Ответов 18
Добрый день.
Тема исследуется, и скорее всего - это сложный вопрос: В современных С++ в чем преимущество struct над class? Спасибо. --------- Ответа я не знаю, и специально выделил слова, чтоб обозначить направление поиска. Возможно, дополнительный вопрос поможет понять смысл:
0
|
||||||
| 20.09.2025, 07:54 | |
|
Ответы с готовыми решениями:
18
В чем преимущество list над вектором?
|
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,138
|
||
| 20.09.2025, 08:20 | ||
Сообщение было отмечено SmallEvil как решение
Решение
JordanO2, разница только в спецификаторе доступа по умолчанию (для элементов и при наследовании). Больше отличий нет
Добавлено через 51 секунду
0
|
||
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,957
|
|
| 20.09.2025, 10:35 | |
|
Если про современный С++, то
C.2: Use class if the class has an invariant; use struct if the data members can vary independently https://isocpp.github.io/CppCo... ependently C.8: Use class rather than struct if any member is non-public https://isocpp.github.io/CppCo... non-public
0
|
|
|
-610 / 35 / 0
Регистрация: 10.03.2025
Сообщений: 485
|
|
| 20.09.2025, 11:49 | |
|
А я то думал, что класс создает новый объект, а структура типа небольшой базы или списка
типа список дней недели, месяцев в году
0
|
|
|
Модератор
|
|||
| 20.09.2025, 12:16 | |||
|
Добавлено через 1 минуту
0
|
|||
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,957
|
|||
| 20.09.2025, 12:27 | |||
std::tm - это структура, состоящая из 9 или 11 членов-переменных. Такие структуры еще называются POD-структурами - (Plain Old Data). Они совместимы с языком С, эффективно используют память, быстро инициализируются и копируются, легко сериализуются и десериализуются, в том числе удобны для работы с бинарными данными, хорошо оптимизируются компиляторами. Но в С++ структуры бывают не только такими. По возможностям, они фактически ничем не отличаются от классов. Добавлено через 2 минуты
1
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 20.09.2025, 16:09 | |||||||
|
Во первых: struct - это елемент совместимости с ЯП Си.
Второе, есть некоторые отличия поведенческие отличия, о всех лучше читать в стандарте. Но вот тебе пример:
http://en.cppreference.com/w/c... class.html
0
|
|||||||
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,957
|
|
| 20.09.2025, 17:13 | |
|
JordanO2, если у них единственное отличие "в спецификаторе доступа по умолчанию (для элементов и при наследовании)", то какие могут быть преимущества у одного перед другим?
Именно, поэтому может возникнуть вопрос, а что использовать в том или ином случае, если они мало чем отличаются? Ну чтобы немного помочь в этом направлении я привел рекомендации В чем преимущество Структур над Классами? Следовать им или нет - это уже твое дело. Но они написаны создателем языка С++ и секретарем комитета по стандартизации WG21.
0
|
|
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||
| 20.09.2025, 17:35 [ТС] | ||
|
И более того, в "лучшем ответе" (не на тот вопрос) видно, что упущена неожиданная особенность языка С++. И именно слово "преимущество" не дает ошибиться. Я сам только сейчас узнал.
0
|
||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,138
|
|
| 20.09.2025, 17:36 | |
|
JordanO2, нет никаких преимуществ
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 20.09.2025, 18:00 | ||
|
Два, ещё раз, не давай оценку другим и не навязывай своё восприятие другим. И жизнь станет приятней. А до тех пор...
0
|
||
| 21.09.2025, 12:34 | ||
|
Например гуглим заголовок BMP-формата, сразу натыкаемся на СИшный - тупо копипастим в свой код и далее уже можем его использовать где угодно.
0
|
||
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,957
|
||
| 21.09.2025, 13:12 | ||
|
Это может быть преимуществом, когда мы хотим использовать плюсовый код в коде на С. Ведь, если мы даже натыкаемся на сишные коды со структурами, то они все равно будут без проблем работать в плюсовом коде. То есть, это "преимущество" только в случае использования плюсового кода в коде С, а не наоборот. Однако, при использовании плюсового кода на С, не думаю, что структуры/классы будут единственной проблемой, там придется все равно сделать немало правок, возможно, даже писать с нуля (в случае, если код написан на современном С++).
0
|
||
|
1478 / 491 / 73
Регистрация: 22.09.2023
Сообщений: 1,542
|
||
| 21.09.2025, 16:10 | ||
|
0
|
||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 869
|
|
| 21.09.2025, 20:24 | |
|
Интересно классу не будет плохо если его обернут в #pragma pack 1 например.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||
| 21.09.2025, 20:45 | ||||
0
|
||||
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,957
|
||
| 21.09.2025, 20:59 | ||
|
также, современные процессоры оптимизированы для работы с автоматически выровненными данными. Вручную выровненные данные могут привести к снижению производительности А для работы с бинарными данными для сериализации данных есть куча других способов
0
|
||
|
6234 / 2943 / 1047
Регистрация: 01.06.2021
Сообщений: 10,957
|
||
| 21.09.2025, 22:08 | ||
|
но в остальных случаях это антипаттерн
0
|
||
| 21.09.2025, 22:08 | |
|
Помогаю со студенческими работами здесь
19
В чем преимущество ReadFileEx/WriteFileEx над асинхронными версиями ReadFile/WriteFile В чем преимущество рекурсивных функций? В чем преимущество использования Pimpl? В чем преимущество приложений на С В чем основное преимущество разделяемой памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|