Шаг 17 - Как НЕ создавать локальные переменные.
Шаг 17 - Как НЕ создавать локальные переменные.
Что он сделал? Я не постигаю. Что нибудь особенное есть в этих словах: "Буря мглою…"? ___ Повезло ___ стрелял в него этот белогвардеец ___ и тем обеспечил бессмертие.
М. Булгаков. Мастер и Маргарита.
Лирическое отступление номер 2. Нажмите PageDown, если Вам неинтересно.
2001, апрель, 15.
Спасибо всем, написавшим отклики. Постараюсь проработать еще 3-4 больших темы и возможно бОльшую пачку маленьких идиом и приемов.
Увы, есть ограничивающие факторы: в первую очередь, это - просто тяжелый труд, а иных стимулов, кроме гордыни и тщеславия, нет. Второй фактор - текущее место работы, я подумываю его сменить. Понимаете, напрягают одноэсить, 1C в смысле, и если заставят, то шагам конец, да и деньги опять же; а я человек увлекающийся, и тем, чем занимаюсь, живу в полном смысле. Я вообще за шаги взялся потому, что решил продвинуть статус MCP до MCSD, стал учебники листать-повторять да и увлекся…
Как следствие: Если Вас заинтересовали мои шаги, и у Вас есть свободные вакансии программиста (и интересная, лучше трудная работа), прошу Вас и Ваш HR department (отдел кадров) рассматривать данные шаги как мое резюме.
Да-да, а что Вы хотите - естественно, это реклама…
Так, все, далее - заготовленный текст шага.
Иной раз найдешь какую-нибудь красивую фенечку, поразишься гению человека, ее придумавшего… и остается только жалеть, что не ТЫ это придумал, а ведь мог же, ну что тут такого! С другой стороны, широкое использование идей других людей и есть тот феномен, который позволил так быстро развиться компьютерной индустрии, и в конечном счете дающий нам работу. (Имею в виду конечно покупку Биллом Гейтсом операционки DOS в прошлом тысячелетии).
Ну ладно, будет. Перейдем к делу.
Допустим у Вас есть блажь - запретить конструирование объектов в стеке. Или другими словами - запретить создание локальных переменных. Зачем? Да как зачем - хочется и все… Ну хотя бы затем, чтобы они не удалялись при выходе за скобки. Или опять же, Вы создаете сообщения и толкаете их в очередь на обработку. Или Вы написали свой менеджер памяти (неплохое занятие кстати, позже будем разбирать управление памятью, увидите, сколь сие плодотворно). Вообще, стек и куча (stack и heap) вещи разные, у них разная скорость и вообще много разного. Смешивать никак нельзя. Ясно, для Вас это сейчас не проблема. Даже если не знали раньше, прочитали в шагах:
1. Определяем ВСЕ необходимые конструкторы.
2. ВСЕ конструкторы кладем в private или protected.
3. Рисуем производящую функцю.
Как писал Зощенко, "стою, любуюсь крепкой тарой".
Есть еще один способ. Вы будете смеяться. Или плакать. Придёте в возбуждение. Так что зажгите сигарету загодя и хорошенько затянитесь.
1. Защищаем… деструктор!
2. Рисуем разрушающую функцию.
Vous savez, деструктор только один, да к тому же виртуальный. Эх, жалко нет метакласса… да и зачем нам метакласс, я же читать не умею (авторская разрядка здесь)!
Нужно только помнить, что разрушение объекта через delete и через явный вызов деструктора есть не одно и то же. Об этом позже, когда будем ковырять память.(Автор после разрядки мгновенно засыпает.)
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Функции и переменные. Локальные переменные
Функции и переменные. Локальные переменные Объявленные ранее функции создают внутри своего тела собственные переменные. Это так называемые локальные переменные. Такие переменные доступны только внутри тела функции, в котором они объявлены. При завершении выполнения
1.20. Как создавать и редактировать темы для XP?
1.20. Как создавать и редактировать темы для XP? В состав ХР не входит никаких программ для работы с темами. Придется использовать
Функции и переменные. Локальные переменные
Функции и переменные. Локальные переменные Объявленные ранее функции создают внутри своего тела собственные переменные. Это так называемые локальные переменные. Такие переменные доступны только внутри тела функции, в котором они объявлены. При завершении выполнения
2.7. Когда нужно создавать несколько сайтов?
2.7. Когда нужно создавать несколько сайтов? Для большинства компаний все коммуникации объединяются на одном сайте, их достаточно разнести по разным разделам, однако бывает так, что компании нужно несколько разных сайтов, иногда даже никак не связанных между собой.
Шаг 24 - Как создавать ТОЛЬКО локальные переменные.
Шаг 24 - Как создавать ТОЛЬКО локальные переменные. В Шаге 17 мы изыскали способ подавить создание локальных переменных. Решим обратную задачу - как подавить иные способы их создания. А какие иные? Любые другие способы предполагают вызов оператора operator new() для выделения
5.2.7.1. Локальные переменные DECLARE
5.2.7.1. Локальные переменные DECLARE DECLARE var_name[,…] type [DEFAULT value]Эта инструкция используется, чтобы объявить локальные переменные. Чтобы обеспечивать значение по умолчанию для переменной, включите предложение DEFAULT. Значение может быть определено как выражение, оно не обязательно
ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ
ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ Мы уже несколько раз касались вопроса о том, что переменные в функции являются ее внутренними переменными и "не известны" вызывающей функции. Аналогично переменные вызывающей функции не известны вызываемой функции. Вот почему для связи с ней, т.
Как создавать классы и правильно пользоваться ими
Как создавать классы и правильно пользоваться ими Класс — это структура данных, у которой могут быть методы, переменные экземпляра и свойства, а также многие другие черты. Но пока мы не будем углубляться в подробности и поговорим об основах работы с классами. Каждый класс
Восстанавливать или создавать?
Восстанавливать или создавать? Понятие "восстановление базы данных" при ее перезаписывании родилось в годы, когда дисковое пространство было дороже, чем прием на работу эксперта по реконструкции разрушенной базы данных или формирование группы персонала по данным для
22.2. Локальные переменные
22.2. Локальные переменные Что такое "локальная" переменная?локальные переменныеПеременные, объявленные как локальные, имеют ограниченную область видимости, и доступны только в пределах блока, в котором они были объявлены. Для функций это означает, что локальная
22.2.1. Локальные переменные делают возможной рекурсию.
22.2.1. Локальные переменные делают возможной рекурсию. Хотя локальные переменные и допускают рекурсию[ 52 ], но она сопряжена с большими накладными расходами и не рекомендуется для использования в сценариях[ 53 ].
14.2. Локальные переменные
14.2. Локальные переменные Переменные интерпретатора shell могут использоваться сценариями в период функционирования интерпретатора shell. После завершения выполнения интерпретатора действие этих переменных прекращается. Например, локальная переменная имя_файла может
Как создавать эффективный класс
Как создавать эффективный класс Рассмотрим вначале эффективные классы. Что нужно сделать для реализации АТД? Результирующий эффективный класс будет формироваться из элементов трех видов:[x]. (E1) Спецификации АТД (множество функций с соответствующими аксиомами и