Для этого достаточно каждый виджет наследовать от специального миксина вроде
Как это поможет, например, во время рантайма получить доступ к произвольным полям, которые есть в данном объекте, конкретного класса? Универсальным способом.
Например — у нас есть, скажем, какой-то экран, форма в некоей нестандартной системе (я описываю реальный случай, но там работа с Delphi производилась, не с С++, но сама ситуация — языконезависима). Виджеты-объекты хранятся в виде списка для этого экрана, соответственно, тип объекта — виджет, а уж кнопка это или editbox какой — науке неизвестно. Теперь мы хотим это все упаковать и перекинуть по сети, а на том конце точь в точь так же развернуть. Итерируем по виджетам, для каждого делаем serialize. Тип неизвестен — он на ходу определяется, для каждого окна свой набор элементов управления.
Хм… если у нас есть дочерние классы, то сериалайзер должен работать с родительским — с наиболее общим знаменателем так сказать. Соответственно, если у нас есть класс A, и дочерний B, то сериалайзеру подается cast B в A, т.е. о типе реального B он не знает. Нет?
Для того, чтобы делать все одним и тем же кодом, которому на вход подается объект и строка/буфер. Чтобы не писать и не тащить с собой сериалайзер для каждого типа отдельно.
Ну, в таком случае вам и не потребуется сведения о типе в рантайме. Но в случае, когда объекты размещаются и передаются не пачкой, это может быть полезным. Здесь 1 указатель — не такая дикая расплата.
Если говорить о скорости, то да, это проблема. С другой стороны, 6 байт фрагментиурет heap.
Почему бы не размещать паразитные указатели по отрицательному смещению, без выравнивания? Так у вас и объект в кеш влезет и операция доступа к TI будет хоть медленной, но доступной.
На GOTO сильно "погнал" Дейкстра, со слабой аргументацией (по крайне мере, поначалу). Его неплохо затролил Кнут, выпустив статью "структурное программирование с использованием goto".
"на сколько тяжело" как "язык располагает к плохому коду" или "насколько язык мешает писать плохой код"? Плюсы не мешают писать плохой код: хочешь выстрелить в ногу — пожалуйста. Но и не располагают к этому.
Сколько людей — столько и мнений; всегда найдутся те, кто не любят, когда их язык ограничивает так или иначе.
Хорошая идея. Насколько я понимаю, срабатывает при удалении фиктивного объекта, когда тот выходит из зоны видимости?
finally может быть вложенным, перемешанным с catch, иметь после себя код, который выполняется только в случае отсутствия исключений, но после finally.
Просто весь аргумент Торвальдса (который скажем, достаточно эпатажен, ну да бог с ним) сводится к "С++ — плохой, потому что на нем говнокодеры могут писать говнокод". Покажите мне язык, на котором невозможно написать говнокод и я вам покажу пример, как это сделать.
«Менять ленту нужно было часто, так как краска на ней долго не держалась, бумага пробивалось до дыр.»
Одна и та же лента запросто по пять раз прогоняется туда и обратно, потом устанавливается «вторым этажом» и по новой. Потом третьим и так до посинения. Переключается колесиком, если нормальная машинка. До дыр бумагу пробивет чаще всего «о».
«Нужно было уметь поменять саму ленту, чтобы она заняла правильное положение и не выскакивала в процессе работы.»
Это просто нереальной сложности задача, непосильная для среднего человека: Снять с оси катушку, поставить новую и продеть ленту через лапки, которые сбоку напоминают С. Часа 3, если под пиво.
Почему-то не написали про цветные ленты. Но самой ятрани (хорошая машинка — была такая) есть переключатель цвета печати в виде колесика. В зависимости от его положения, лента при нажатии литеры поднимается на разную высоту, и были специальные ленты — например, двухцветные — верхняя половина черная, нижняя — красная. Или другие сочетания.
Еще на Ятрани есть специальное приспособление для печати таблиц: сзади ряд флажков, которые активируют звонок. По одному флажку на знакоместо. Выставляются флажки, соответствующие разделителям. При печати, после того как вписано значение, жмется пробел до звонка и ставится разделитель. Плюс автоподача до следующего флажка на механике.
setProperty может выставить произвольный property в произвольном объекте?
Как это поможет, например, во время рантайма получить доступ к произвольным полям, которые есть в данном объекте, конкретного класса? Универсальным способом.
pop ebp
ret
Готово!
Почему бы не размещать паразитные указатели по отрицательному смещению, без выравнивания? Так у вас и объект в кеш влезет и операция доступа к TI будет хоть медленной, но доступной.
А зачем хранить имя класса вместе с объектом (ведь 6 байт — это про instance, нет?)
Воу-воу, палехчи. Паскаль-то чем не угодил?
Сколько людей — столько и мнений; всегда найдутся те, кто не любят, когда их язык ограничивает так или иначе.
https://www.etsy.com/listing/118112526/universal-typewriter-ribbon?ref=related-0
finally может быть вложенным, перемешанным с catch, иметь после себя код, который выполняется только в случае отсутствия исключений, но после finally.
и я вам покажу пример, как это сделать.Одна и та же лента запросто по пять раз прогоняется туда и обратно, потом устанавливается «вторым этажом» и по новой. Потом третьим и так до посинения. Переключается колесиком, если нормальная машинка. До дыр бумагу пробивет чаще всего «о».
«Нужно было уметь поменять саму ленту, чтобы она заняла правильное положение и не выскакивала в процессе работы.»
Это просто нереальной сложности задача, непосильная для среднего человека: Снять с оси катушку, поставить новую и продеть ленту через лапки, которые сбоку напоминают С. Часа 3, если под пиво.
Почему-то не написали про цветные ленты. Но самой ятрани (хорошая машинка — была такая) есть переключатель цвета печати в виде колесика. В зависимости от его положения, лента при нажатии литеры поднимается на разную высоту, и были специальные ленты — например, двухцветные — верхняя половина черная, нижняя — красная. Или другие сочетания.
Еще на Ятрани есть специальное приспособление для печати таблиц: сзади ряд флажков, которые активируют звонок. По одному флажку на знакоместо. Выставляются флажки, соответствующие разделителям. При печати, после того как вписано значение, жмется пробел до звонка и ставится разделитель. Плюс автоподача до следующего флажка на механике.