![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
icepro |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
люди приведите пожалуйста толковый пример где нужно использовать именно юнион, а то в нете да и на мсдн там какие-то фиговые пример, или то я не умен или я не пойму в каких именно ситуациях он лучше... заранее спасибо
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
ИМХО
В моей практике не случалось случая, когда было необходимо использовать union. Предлагаю изучать другие возможности С++, а union оставить "на закуску". Вообще применять его можно когда лень приводить типы друг к другу, лично я вижу его применение при организации сетевых приложений на сокетах, думаю у других участников форума свои мысли на этот счет. |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Он нужен когда надо хранить несколько типов данных, но всегда нужен только один из них, т.е. экономим память. На локальном компьютере его не часто используют, а вот в сетях - штука полезная. Пример из жизни. Программе по предварительным расчетом максимум нужно будет отсылать 4 - маленьких числа или 2 - средних или 1 - большое создаем
получается сэкономили на размере сообщения. Можно конечно всегда отправлять int, но зачем мучатся с приведениями типов если есть юнион? Это сообщение отредактировал(а) azesmcar - 13.3.2009, 06:04 |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
в моей - сплошь и рядом. Объединения очень хороши для представления одних типов другими, без преобразования, т.к указывают на одну область памяти. К примеру тот же int представить массивом символов или наоборот. |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
да, можно еще о приведении к битам рассказать ![]()
|
||||
|
|||||
annushka89 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
вот яркий пример (битовые поля), разбирайтесь
|
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
звук, например, можно представить так
Это сообщение отредактировал(а) Dmi3ev - 13.3.2009, 10:43 -------------------- |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Полностью согласен. И не предлагаю его избегать - просто лично мне он как-то был не нужен. Но если в языке есть конструкция и она подходит для решения задачи, зачем ее избегать (опять в голове навязчивый goto ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
В книжках часто упоминается, наверно потому, что goto пытаются пропихнуть везде (от лени или незнания) вместо циклов и функций, а использования union'a избегают. А насчет одной полки Вы правы - union гораздо опаснее и требует большей ответственности и знаний ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Добавлено @ 15:33 icepro, если ты получил ответ на свой вопрос, то пометь тему решенной Это сообщение отредактировал(а) bsa - 19.3.2009, 00:07 |
|||
|
||||
UniBomb |
|
||||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
Дабы вернуть обсуждение в изначальное русло приведу пример из жизни. Может он (пример) и не блещет изяществом, но меня оно вполне устраивает.
Имею в программе вот такой юнион:
Это пример из программы для мк и использование юниона помагает обеспечить высокую производительность при разложении данных на байты. Эти данные я передаю по самописному протоколу, который (протокол) позволяет указывать что именно нужно передавать (например прислать данные начиная с 8-го байта и количество 24 байта). Составление запрашиваемого массива данных в этом случае укладывается в две строчки:
зы: последние три чара введены для удобства и я знаю, что можно обойтись одним. Это сообщение отредактировал(а) UniBomb - 13.3.2009, 15:33 |
||||
|
|||||
icepro |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Всем спасибо! Четко и ясно!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |