|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||||||
В чем преимущество Структур над Классами?20.09.2025, 07:54. Показов 2876. Ответов 18
Добрый день.
Тема исследуется, и скорее всего - это сложный вопрос: В современных С++ в чем преимущество struct над class? Спасибо. --------- Ответа я не знаю, и специально выделил слова, чтоб обозначить направление поиска. Возможно, дополнительный вопрос поможет понять смысл:
0
|
||||||
| 20.09.2025, 07:54 | |
|
Ответы с готовыми решениями:
18
В чем преимущество list над вектором?
|
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,981
|
||
| 20.09.2025, 08:20 | ||
Сообщение было отмечено SmallEvil как решение
Решение
JordanO2, разница только в спецификаторе доступа по умолчанию (для элементов и при наследовании). Больше отличий нет
Добавлено через 51 секунду
0
|
||
|
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
|
|
| 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
Сообщений: 484
|
|
| 20.09.2025, 11:49 | |
|
А я то думал, что класс создает новый объект, а структура типа небольшой базы или списка
типа список дней недели, месяцев в году
0
|
|
|
Модератор
|
|||
| 20.09.2025, 12:16 | |||
|
Добавлено через 1 минуту
0
|
|||
|
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
|
|||
| 20.09.2025, 12:27 | |||
std::tm - это структура, состоящая из 9 или 11 членов-переменных. Такие структуры еще называются POD-структурами - (Plain Old Data). Они совместимы с языком С, эффективно используют память, быстро инициализируются и копируются, легко сериализуются и десериализуются, в том числе удобны для работы с бинарными данными, хорошо оптимизируются компиляторами. Но в С++ структуры бывают не только такими. По возможностям, они фактически ничем не отличаются от классов. Добавлено через 2 минуты
1
|
|||
|
Заблокирован
|
|||||||
| 20.09.2025, 16:09 | |||||||
|
Во первых: struct - это елемент совместимости с ЯП Си.
Второе, есть некоторые отличия поведенческие отличия, о всех лучше читать в стандарте. Но вот тебе пример:
http://en.cppreference.com/w/c... class.html
0
|
|||||||
|
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
|
|
| 20.09.2025, 17:13 | |
|
JordanO2, если у них единственное отличие "в спецификаторе доступа по умолчанию (для элементов и при наследовании)", то какие могут быть преимущества у одного перед другим?
Именно, поэтому может возникнуть вопрос, а что использовать в том или ином случае, если они мало чем отличаются? Ну чтобы немного помочь в этом направлении я привел рекомендации В чем преимущество Структур над Классами? Следовать им или нет - это уже твое дело. Но они написаны создателем языка С++ и секретарем комитета по стандартизации WG21.
0
|
|
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||
| 20.09.2025, 17:35 [ТС] | ||
|
И более того, в "лучшем ответе" (не на тот вопрос) видно, что упущена неожиданная особенность языка С++. И именно слово "преимущество" не дает ошибиться. Я сам только сейчас узнал.
0
|
||
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,981
|
|
| 20.09.2025, 17:36 | |
|
JordanO2, нет никаких преимуществ
0
|
|
|
Заблокирован
|
||
| 20.09.2025, 18:00 | ||
|
Два, ещё раз, не давай оценку другим и не навязывай своё восприятие другим. И жизнь станет приятней. А до тех пор...
0
|
||
| 21.09.2025, 12:34 | ||
|
Например гуглим заголовок BMP-формата, сразу натыкаемся на СИшный - тупо копипастим в свой код и далее уже можем его использовать где угодно.
0
|
||
|
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
|
||
| 21.09.2025, 13:12 | ||
|
Это может быть преимуществом, когда мы хотим использовать плюсовый код в коде на С. Ведь, если мы даже натыкаемся на сишные коды со структурами, то они все равно будут без проблем работать в плюсовом коде. То есть, это "преимущество" только в случае использования плюсового кода в коде С, а не наоборот. Однако, при использовании плюсового кода на С, не думаю, что структуры/классы будут единственной проблемой, там придется все равно сделать немало правок, возможно, даже писать с нуля (в случае, если код написан на современном С++).
0
|
||
|
1184 / 460 / 68
Регистрация: 22.09.2023
Сообщений: 1,398
|
||
| 21.09.2025, 16:10 | ||
|
0
|
||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 859
|
|
| 21.09.2025, 20:24 | |
|
Интересно классу не будет плохо если его обернут в #pragma pack 1 например.
0
|
|
|
Заблокирован
|
||||
| 21.09.2025, 20:45 | ||||
0
|
||||
|
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
|
||
| 21.09.2025, 20:59 | ||
|
также, современные процессоры оптимизированы для работы с автоматически выровненными данными. Вручную выровненные данные могут привести к снижению производительности А для работы с бинарными данными для сериализации данных есть куча других способов
0
|
||
|
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
|
||
| 21.09.2025, 22:08 | ||
|
но в остальных случаях это антипаттерн
0
|
||
| 21.09.2025, 22:08 | |
|
Помогаю со студенческими работами здесь
19
В чем преимущество ReadFileEx/WriteFileEx над асинхронными версиями ReadFile/WriteFile В чем преимущество рекурсивных функций? В чем преимущество использования Pimpl? В чем преимущество приложений на С В чем основное преимущество разделяемой памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|