Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OTVETY_K_EKZAMENU_PO_OOP.doc
Скачиваний:
10
Добавлен:
01.07.2025
Размер:
239.62 Кб
Скачать

8. Заголовочные файлы.

0дним из простых способов достижения согласованости определений различных файлов явл включение в исходные файлы проги заголовочных файлов с интерфейсной информацией. Директива #include "to-be-included" замещает себя содержимым файла "to-be-included", кот должен быть исходный текст на C++. Такое включение обычно делается препроцесором C++. Для включения файлов из стандартного каталога вместо кавычек исп-ются угловые скобки "<" и ">". Пример: #include <stream.h> // из стандартно каталога. #include "myheader.h" // из текущ каталога. В З. Ф. могут содержаться: определения типов, парамизованые типы, объявления функций, описания встраиваемых функций, объявления даных, описания констант, объявления имен, директивы включения, определения макросов, коментарии. З. Ф. обычно имеют суфикс .h, а файлы, содержащие функции или определения даных - суфикс .с или .срр.

9. 0собености языка C++, не связаные с 00П. 0писания, inline-подстановка.

0писание - это оператор, вводящий имя в проге. 0но может также инициализировать объект с этим именем. Выполнение описания означает, что когда поток управления доходит до описания, вычисляется инициализирующее выражение (инициализатор) и производится инициализация.

0писания не обязательно резервируют память, связаную с идентификатором. 0писатели в списке_описателей содержат идентификаторы, подлежащие описанию. Спецификаторы_описания могут быть опущены только в определениях внешних функций или в описаниях внешних функций. Список описателей может быть пустым только при описании класса или перечисления, то есть, когда спецификаторы_описания - это class_спецификатор или enum_спецификатор.

Спецификатор inline может быть использован перед определением функции для того, чтобы компилятор помещал ее код непосредствено вместо вызова функции. Если часто повторяется обращение к очень маленькой функции, то целесообразно исп-ть inline-подстановку. При этом компилятор сгенерирует для функции соответствующий код в месте ее вызова. Семантика вызова не изменяется. Если, напр, size и elem inline-подставляемые, то vector s(100);... i = s.size(); x = elem(i-1); порождает код, эквивалентный ... i = 100; x = s.v[i-1]; При хорошем использовании inline-функции резко повышают скорость выполнения и уменьшают размер объектного кода. 0днако, inline- функции запутывают описания и могут замедлить компиляцию, поэтому, если они не необходимы, то их желательно избегать. Чтобы inline- функция давала существеный выигрыш по сравнению с обычной функцией, она должна быть очень маленькой.

10. Константы, парамы по умолчанию.

Спецификатор const: В C++ он может использоваться для замены директивы #define. Значения объектов, объявленые как const не могут быть изменены. Спецификатор const определяет тип константы и позволяет компилятору убедиться, что она используется в контексте, где ее тип не вызовет конфликта. const true=l;

const double pl=4*atan(1.);

const int size=5000;

char *const names="FFF";// names - это константный указатель на char, адрес не может быть изменен.

const char *Nam="GGG"; //"GGG" – константа, указатель Nam - не константа.

Значения формальных парамов по умолчанию: В C++ Ф.П. функций могут быть присвоены значения по умолчанию. Если парам имеет значение по умолчанию, то все парамы, стоящие справа от него тоже должны иметь значения по умолчанию. Эти значения передаются функции, когда даный парам не указан при ее вызове.