|
|||||||||||||||||
Доступ к элементам класса. Таблица 1.1. Конструкторы и деструкторы при наследовании. Пример 1.1.. Виртуальные функцииДоступ к элементам класса При наследовании ключ доступа определяет уровень доступа к элементам базового класса внутри производного класса. В таблице 1.1 описаны возможные варианты доступа. Таблица 1.1
Конструкторы и деструкторы при наследовании Конструкторы не наследуются. Если конструктор базового класса требует спецификации одного или нескольких параметров, конструктор производного класса должен вызывать базовый конструктор, используя список инициализации элементов. Пример 1.1. #include <string.h> class Base { public: Base(int, float); }; class Derived: Base { public: Derived(char* lst, float amt); }; Derived:: Derived(char* lst, float amt) : Base(strlen(lst),amt) { } В деструкторе производного класса компилятор автоматически генерирует вызовы базовых деструкторов, поэтому для удаления объекта производного класса следует сделать деструктор в базовых классах виртуальным. Для вызова используется delete this либо operator delete. Виртуальные функции Функция-элемент может быть объявлена как virtual. Ключевое слово virtual предписывает компилятору генерировать некоторую дополнительную информацию о функции. Если функция переопределяется в производном классе и вызывается с указателем (или ссылкой) базового класса, ссылающимся на представитель производного класса, эта информация позволяет определить, какой из вариантов функции должен быть выбран: такой вызов будет адресован функции производного класса. Для виртуальных функций существуют следующие правила: - виртуальную функцию нельзя объявлять как static. - спецификатор virtual необязателен при переопределении функции в производном классе. - виртуальная функция должна быть определена в базовом классе и может быть переопределена в производном.
|
|||||||||||||||||
|