Основы программирования на C++, PASCAL
Формат объявления класса-потомка следующий:
class имя_потомка: режим_доступа имя предка {новые_элементы}
Для того чтобы элементы-данные класса-предка были доступны функциям класса-потомка, этим элементам должен быть поставлен в соответствие режим доступа protected (защищенный).
Пример 2. Следующая программа на Си++ является аналогом программы на Турбо Паскале из примера 2 в разд. 3.23.
В результате выполнения теста на экране будет получено:
Конструкторы и деструкторы. Смысл этих понятий аналогичен их смыслу в Турбо Паскале. Основное назначение конструктора — инициализация элементов-данных объекта и выделение динамической памяти под данные. Конструктор срабатывает при выполнении оператора определения типа «класс для объекта». Деструктор освобождает выделенную конструктором память при удалении объекта.
Области памяти, занятые данными базовых типов, таких, как int, float, double и т.п., выделяются и освобождаются системой автоматически и не нуждаются в помощи конструктора и деструктора. Именно поэтому в программах, рассмотренных в примерах 1 и 2, конструкторы и деструкторы не объявлялись (система все равно создает их автоматически).
Конструктор и деструктор объявляются как члены-функции класса. Имя конструктора совпадает с именем класса. Имя деструктора начинается с символа ~ (тильда), за которым следует имя класса.
Пример 3. Объявляется класс для строковых объектов. В этом примере конструктор с помощью оператора new резервирует блок памяти для указателя stringl. Освобождение занятой памяти выполняет деструктор с помощью оператора delete.
В основной программе явного обращения к конструктору и деструктору не требуется. Они выполняются автоматически.
Полиморфизм допускает использование функций с одним и тем же именем (а также операций) применительно к разным наборам аргументов и операндов, а также к разным их типам, в зависимости от контекста программы. В Си++ полиморфизм реализован через механизм перегрузки.
Внутри класса допускается существование нескольких функций с одинаковым именем, но различающимися типами результатов и наборами формальных параметров. При обслуживании обращения к такой функции компилятор выбирает подходящий вариант в зависимости от количества и типов аргументов.
Пример 4