|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
||||||
Константа в классе03.09.2015, 11:13. Показов 16619. Ответов 39
Метки нет (Все метки)
Что-то у нас с компилятором какое-то недопонимание.
0
|
||||||
| 03.09.2015, 11:13 | |
|
Ответы с готовыми решениями:
39
Константа в классе, инициализируемая в конструкторе Константа в абстрактном классе Константа ref-типа, доступная в любом классе |
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 03.09.2015, 21:42 | ||
|
Иначе говоря, enum вводится в первую очередь чтобы по нему делать ветвление при выборе, а не использовать подлежащее значение. Наличие например enum'а из одного значения - явно вырожденный случай как раз для реализации того, что должна делать статическая константа.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 03.09.2015, 21:43 | ||||
|
гарантированно времени компиляции. он гарантированно не будет кушать память. мой вопрос был: чем он плох? нежели просто "константа"
0
|
||||
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
|||||||||||
| 03.09.2015, 21:45 [ТС] | |||||||||||
|
Так надо
0
|
|||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 03.09.2015, 21:49 | |||
|
Добавлено через 2 минуты ну а проверить хотя б прежде чем писать не пробовали? зы: инициализировать интегральное дробным - вот это точно не нужно. все остальное из области каких то непонятных деццких привычек.
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 03.09.2015, 21:52 | ||
|
0
|
||
|
|
|||
| 03.09.2015, 21:53 | |||
|
Tulosba, я просто не соглашусь с твоим мнением в данной ситуации.
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 03.09.2015, 21:55 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 03.09.2015, 21:56 | ||
|
енумы гарантированно времени компиляции. а вот обычные константы - не гарантированно. другая менее существенная разница: если у интегральной константы попросить адрес, она скушает память. это легко можно сделать "ничайно". попросить адрес у енума нельзя. только у уже существующего объекта. что делает енумы привентивно более экономичными.
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 03.09.2015, 21:59 | ||
|
В нормальной реализации статическая константа без надобности тоже не будет память кушать. Но зато, если приспичит адрес взять, то enum лососнет тунца, а со статиком достаточно добавить определение (если еще не добавлено).
0
|
||
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
||
| 03.09.2015, 21:59 [ТС] | ||
|
Надо рапортовать баг разработчикам С++ ![]() тут Сначала говорится о том что enum это перечисление. Потом о том что если использовать перечисление не как перечисление, а как число, то можно им (перечисляемым сущьностям) сопоставлять числа. Вобщем лично я эту возможность осуждаю и считаю недоработкой С++.
0
|
||
|
|
|||
| 03.09.2015, 22:02 | |||
|
Добавлено через 2 минуты
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 03.09.2015, 22:08 | |||
Пока ты не добавил явно определение, взять адрес не получится.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 03.09.2015, 22:11 | |||||||
|
1. коллизии имен (печально, но жить можно. майкрософт например, не заморачивается) 2. отсутствие типизации у констант. кстати, именно факт типизации енума и делает его идеальным средством для нужд метапрограммирования. с их помощью можно реализовать перегрузки функций, инстанцирования шаблонов, под разные случаи. последнее, где я использовал типизацию енумов - статическая система сообщений, на шаблонах, где в качестве енума определял тип сообщения (и не нужно никаких структур городить). а так же - статическая таблица. вот кстати, её пример:
и в зависимости от. реализовывать те, или иные стратегии обработки различных типов данных. использовал в маханизме класса "variant", который по своему дизайну является аналогом питоновского варианта. и был предназначен для сетевого взаимодействия.
0
|
|||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 03.09.2015, 22:12 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 03.09.2015, 22:17 | |||||||||
|
у енума это уже не так легко. Добавлено через 54 секунды
0
|
|||||||||
|
|
||
| 03.09.2015, 22:24 | ||
|
Кстати, про взятие адреса hoggy хорошо заметил.
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||
| 03.09.2015, 22:32 | ||||
|
Но я и не говорю, что #define vs const это то же самое по степени ужаса, что enum vs static const. В твоем примере с таблицей enum используется по прямому назначению - перечисление, тут всё ок. Мы же обсуждали именно использование enum в качестве static const. И вот в этом (и не надо сюда приплетать другие случаи) я однозначно за то, чтобы использовать static const. Как минимум по причине того, что это лучше отражает суть решаемом задачи. А углубляться в особенности реализации (типа съест память константа или не съест) в данном случае могу отнести к задачам из группы "преждевременной оптимизации". Добавлено через 4 минуты Добавлено через 39 секунд
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||||
| 03.09.2015, 22:45 | |||||||||||||||||||||||||
|
некоторые вычисления хочется поиметь в компалтайме. например, факториал:
но сам по себе constexpr вам этого не гарантирует: http://rextester.com/SXVWCI75516
но помимо этого они гарантируют, что все вычисления будут времени компиляции. и обладают типизацией. мне на практике обычные константы глаза не мозолят. но если нужны времени компиляции, лично я предпочитаю енумы, как более простое, очевидное, но в тоже время мощное средство для метапрограмминга. Добавлено через 3 минуты дизайн манипулятора вывода в консольку:
дефайны препроцессора - отличная штука, когда например, хочется организовать цикл на препроцессоре для нужд генерации кода. сегодня не сильно актуально, во времена вариадик шаблонов. но во времена с++03 это было очень даже актуально. незаменимая вещь для метапрограмминга.
0
|
|||||||||||||||||||||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 03.09.2015, 23:16 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||||
| 03.09.2015, 23:30 | ||||||||||||||||||
|
а ещё частенько практикую нечто вроде:
позволяет упаковывать в одной переменной уйму флагов. при этом переменная типизированная - енумовская. поэтому, отладчики показывают красиву инфу, аля
в которых без битовых операций не врубишься, чего там включено. вот пример использования механизма флагов, базируется на енумах:
Добавлено через 29 секунд зависит от.
0
|
||||||||||||||||||
| 03.09.2015, 23:30 | |
|
Даны функциональная константа, предикатная константа и определённое количество аксиом. Как построить модель
В классе инициализировать массив, в классе создать функцию вывода массива на экран
Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|