|
Программирование >> Дополнительные возможности наследования
вания, как ключевое слово const и шаблоны, которые предлагают лучшие альтернативы использованию препроцессора. Кроме того, вы узнали, как устанавливать и возвращать значения отдельных битов и как выделять офаниченное число битов для переменных-членов класса. Наконец, вы получили информацию о стиле написания профаммы на языке С++, а также о том, с помощью каких первоисточников лучше продолжить изучение С++. Вопросы U ответы Если С++ предлагает лучшие решения, чем препроцессор, почему же эти средства все еще доступны? Во-первых, язык С++ совместим с язьпсом С, поэтому все существенные компоненты языка С должны поддерживаться в С++. Во-вторых, некоторые возможности препроцессора все еще используются в С++, например зашита от повторного включения файла. Зачем использовать макросы там, где можно использовать обычные функции? Макросы вставляются компилятором прямо в код профаммы, что ускоряет их выполнение. Кроме того, с помощью макросов можно динамически менять типы в объявлениях, хотя использовать для этого шаблоны предпочтительнее. В каких случаях лучше использовать макрос, чем подставляемую функцию? Часто это не имеет большого значения, поэтому используйте тот вариант, который кажется вам проще. Однако макросы предоставляют такие дополнительные возможности, как замена символов, взятие в кавычки и конкатенация. Ни одна из этих возможностей не реализуется с помощью подставляемой функции. Какая альтернатива использованию препроцессора для печати промежуточных значений в процессе отладки? Лучше всего использовать оператор watch внуфи отладчика. За информацией о его использовании обращайтесь к документации, прилагаемой к вашему компилятору или отладчику. Когда лучше использовать макрос assertO, а когда - исключение? Если ошибка в выполнении профаммы может возникнуть из-за внешних причин, таких как некорректный ввод данных пользователем или несовершенство компьютерной системы, используйте исключения. Если же сбой профаммы возникает вследствие синтаксических или логических ошибок в коде профаммы, используйте макрос assert(). Когда лучше использовать битовые поля вместо обычных переменных? Когда критическим фактором становится размер объектов. При работе с Офани-ченным объемом памяти или с профаммным обеспечением усфойств связи вы почувствуете, что экономия на каждом байте существенна для успеха вашей профаммы. Почему споры о стилях столь эмоциональны? Профаммисты очень привязываются к выработанному ими стилю. Допустим, вы привыкли использовать отступы следующим образом: if {НекотороеУсловие){ II выражения } закрывающая фигурная скобка Согласитесь, что вам будет трудно отказаться от этой привычки - ведь новые стили кажутся поначалу неправильными и вводящими в заблуждение. Если вы устали от моих советов, попробуйте подключиться к популярной группе новостей и узнайте, какой стиль выравнивания работает лучше всего, какой редактор предпочтительнее для С++ или какую программу лучше всего использовать в качестве текстового процессора. Затем усаживайтесь поудобнее и приготовьтесь прочитать тысяч десять противоречащих друг другу сообшсний. Пришло время прощаться? Да! Вы изучили С++, хотя... нет. Еще десять лет назад один человек мог изучить все, что было известно в мире о микроЭВМ, или, по крайней мере, чувствовать себя вполне уверенно в этом вопросе. Сегодня это исключено даже теоретически. Одному человеку невозможно разобраться во всем, и даже за то время, пока вы попытаетесь это сделать, ситуация в индустрии программирования изменится, а значит, вы опять отстанете от нее. Тем не менее обязательно продолжайте читать, постоянно обращайтесь к различным источникам - журналам и группам новостей, которые будут держать вас в курсе самых последних новшеств в этой области. Контрольные вопросы 1. Для чего нужны средства защиты от повторного включения? 2. Как указать компилятору, что необходимо напечатать содержимое промежуточного файла, полученного в результате работы препроцессора? 3. Какова разница между директивами ttdefine debug О и #undef debug? 4. Что делает оператор дополнения до единицы? 5. Чем отличается оператор побитового ИЛИ от оператора исключающего побитового ИЛИ? 6. Какова разница между операторами & и &&? 7. В чем разница между операторами и 11 ? 1. Создайте защиту от повторного включения файла заголовка STRING, н. 2. Напишите макрос assertO, который будет печатать сообщение об ошибке, а также имя файла и номер строки, если уровень отладки равен 2; будет печатать сообщение (без имени файла и номера строки), если уровень отладки равен 1; не будет ничего делать, если уровень отладки равен 0. 3. Напишите макрос DPrint, который проверяет, определена ли лексема DEBUG, и, если да, выводит значение, передаваемое как параметр. 4. Напишите программу, которая складывает два числа без использования операции сложения (+). Подсказка: используйте побитовые операторы! VOcBou самвсшояшепьнв Неделя 3 в приведенной ниже программе используются многие продвинутые методы, с которыми вы познакомились на протяжении трех недель усердных занятий. Программа содержит связанный список, основанный на шаблоне; кроме того, в ней проводится обработка исключительных ситуаций. Тщательно разберитесь в этой программе, и, если полностью ее поймете, значит, вы - программист С++. предупреждение Если ваш компилятор не поддерживает шаблоны или блоки try и catch, вы не сможете скомпилировать эту программу. Аисшинг 3.1. Программа, осноаанная на мшоршах нодауз 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Название: Обзор недели 3 Файл; Week3 Описание: Программа с использованием связанного списка на основе шаблона с обработкой исключительных ситуаций Классы; PART - хранит номера запчастей и потенциально другую информации о запчастях. Зто будет пример класса для хранения списка, Обратите внимание на использование оператора << для печати информации о запчасти на основе его типа и времени выполнения, Node - действует как узел в классе List List - список, основанный на шаблоне, который обеспечивает работу связанного списка Автор; Jesse Liberty (Jl) �41994
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |