|
Программирование >> Арифметические и логические операции
Глава 26. Соображения мобильности Определенные части C++ являются машинно-зависимыми по своей сути. Как показала практика, характеристики аппаратуры в чистом виде, такие, как размер слова, свойства плавающей арифметики и целого деления, не создают особых проблем. Другие аппаратные аспекты отражаются на различных программных разработках. Некоторые из них, особенно знаковое расширение (преобразование отрицательного символа в отрицательное целое) и порядок расположения байтов в слове, являются досадными помехами, за которыми надо тщательно следить. Большинство других являются всего лишь мелкими сложностями. Число регистровых переменных, которые фактически могут быть помещены в регистры, различается от машины к машине, как и множество фактических типов. Тем не менее, все компиляторы на своей машине все делают правильно; избыточные или недействующие описания register игнорируются. Некоторые сложности возникают при использовании двусмысленной манеры программирования. Писать программы, зависящие от какой-либо из этих особенностей, районе неблагоразумно. В языке не определен порядок вычисления параметров функции. На некоторых машинах он слева направо, а на некоторых справа налево. Порядок появления некоторых побочных эффектов также неде-терминирован. Поскольку символьные константы в действительности являются объектами типа int, то могут быть допустимы многосимвольные константы. Однако конкретная реализация очень сильно зависит от машины, поскольку порядок, в котором символы присваиваются слову, различается от машины к машине. На некоторых машинах поля в слове присваиваются слева направо, на других справа налево. Эти различия невидны для отдельных программ, не позволяющих себе каламбуров с типами (например, преобразования int указателя в char указатель и просмотр памяти, на которую указывает указатель), но должны приниматься во внимание при согласовании внешне предписанных форматов памяти. Глава 27. Свободная память Операция new вызывает функцию extern void* new (long); для получения памяти. Параметр задает число требуемых байтов. Память будет инициализирована. Если new не может найти требуемое количество памяти, то она возвращает ноль. Операция delete вызывает функцию extern void delete (void*); чтобы освободить память, указанную указателем, для повторного использования. Результат вызова delete() для указателя, который не был получен из new(), не определен, это же относится и к повторному вызову delete() для одного и того же указателя. Однако уничтожение с помощью delete указателя со значением ноль безвредно. Предоставляются стандартные версии new() и delete(), но пользователь может применять другие, более подходящие для конкретных приложений. Когда с помощью операции new создается классовый объект, то для получения необходимой памяти конструктор будет (неявно) использовать new. Конструктор может осуществить свое собственное резервирование памяти посредством присваивания указателю this до каких-либо использований. С помощью присваивания this значения ноль деструктор может избежать стандартной операции дерезервирования памяти для объекта его класса. Например: class cl int v[10]; cl () { this = my own allocator (sizeof (cl)); } ~cl () { my own deallocator (this); this = 0; } На входе в конструктор this является не-нулем, если резервирование памяти уже имело место (как это имеет место для автоматических объектов), и нулем в остальных случаях. Если производный класс осуществляет присваивание this, то вызов конструктора (если он есть) базового класса будет иметь место после присваивания, так что конструктор базового класса ссылаться на объект посредством конструктора производного класса. Если конструктор базового класса осуществляет присваивание this, то значение также будет использоваться конструктором (если таковой есть) производного класса. Часть 2. Турбо С ++ Глава 1. Интегрированная среда разработки TURBO С++ упрощает процесс программирования и делает его более эффективным. При работе в TURBO С++ весь комплекс инструментальных средств, необходимых для написания, редактирования, компиляции, компоновки и отладки программ, оказывается под рукой у пользователя. Весь этот комплекс возможностей заключен в Интегрированной Среде Разработки (ИСР). Кроме того, Среда разработки программ TURBO С++ предоставляет следующие дополнительные возможности, которые еще больше упрощают процесс написания программ: ♦ Возможность отображения на экране монитора значительного числа окон, которые можно перемещать по экрану и размеры которых можно изменять. ♦ Наличие поддержки мыши . ♦ Наличие блоков диалога. ♦ Наличие команд удаления и вставки (при этом допускается копирование из окна HELP и между окнами EDIT). ♦ Возможность быстрого вызова других программ и обратного возврата. ♦ Наличие в редакторе макроязыка. ИСР содержит три визуальных компоненты: строку меню у верхнего края экрана, оконную область в средней части экрана и строку состояния у нижнего края экрана. В результате выбора некоторых элементов меню на экран будут выдаваться блоки диалога. Глава 2. Строка меню и меню Строка меню представляет собой основное средство доступа ко всем командам меню. Строка меню оказывается невидимой лишь во время просмотра информации, отображаемой программой и во время перехода к другой программе. Глава 3. Окна TURBO C++ Большая часть того, что видно и делается в среде TURBO C++, происходит в окне. Окно - это область экрана, которую можно перемещать, размеры которой можно перемещать, изменять, которую можно распахивать на весь экран, ориентировать встык с другими окнами. В TURBO C+ + может существовать произвольное число окон, но в каждый момент активно только одно окно. Активным является то окно, в котором в настоящий момент происходит работа. Любые вводимые команды или вводимый текст, как правило, относятся только к активному окну. Существует несколько типов окон, но большая их часть имеет следующие общие элементы: ♦ строку заголовка; ♦ маркер закрытия окна; ♦ полосы прокрутки; ♦ угол изменения размера окна; ♦ маркер распахивания окна на весь экран; ♦ номер окна. Строка состояния Строка состояния, расположенная у нижнего края экрана, выполняет следующие функции: ♦ Напоминает об основных клавишах и клавишах активизации, которые в настоящий момент могут быть применены к активному окну. ♦ ♦ Позволяет установить указатель мыши на обозначения клавиш и кратковременно нажать кнопку мыши для выполнения указанного действия, вместо того, чтобы выбирать команды из меню или нажимать соответствующие клавиши. Сообщает, какое действие выполняется программой. Предлагает состоящие из одной строки советы и рекомендации по любой выбранной команде меню и элементам блока диалога. Блоки диалога Если за элементом меню располагается многоточие, то в результате выбора данной команды будет открыт блок диалога, обеспечивающий удобный способ просмотра и задания многочисленных параметров. При задании значения в блоке диалога работа происходит с пятью базовыми типами средств управления: указателями выбора, переключателями состояния, кнопками действия, блоками ввода и блоками списка. Глава 4. Работа с экранным меню Меню (системное) Отображается у левого края строки меню. Для вызова следует нажать ALT+пробел. При вызове этого меню отображаются команды: ♦ About При выборе данной команды появляется блок диалога, в котором содержится информация по авторским правам и номер версии TURBO C++. Данное окно закрывается нажатием клавиши ESC или ENTER. ♦ Clear Desktop Закрывает все окна и стирает все списки предысторий. Эта команда полезна в тех случаях, когда начинается работа над новым проектом. ♦ Repaint Desktop Осуществляет регенерацию изображения на экране.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |