Информатика и технология программирования


Двоичное дерево - часть 5




-функции-элементы базового класса наследуются в производном классе, то есть вызов функции, определенной в базовом классе возможен для объекта производного класса и понимается как вызов ее для входящего в него объекта базового класса;



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

Сказанное проиллюстрируем весьма условным примером определения производного класса:


class a
{
public:
void f() {}
void g() {}
};
// производный класс : базовый класс


class b : a
{
public:
void f() // "f" переопределяется


{ ...
a::f(); // явный вызов "f" для БК


} // "g" наследуется из БК


void h() {} // собственная функция в ПК


};
void main()
{
a A1;
b B1;
B1.f(); // вызов переопределенной b::f()


B1.g(); // вызов наследуемой a::f()


}

Предполагается, что при вызове в производном классе функций, наследуемых из базового, транслятор производит преобразование указателя this объекта производного класса в указатель на входящий в него объект базового класса, учитывая размещение второго в первом.

Взаимоотношение конструкторов и деструкторов базового и производного классов аналогичны описанным выше:



-если конструктор производного класса определен обычным образом, то сначала вызывается конструктор базового класса без параметров, а затем конструктор производного класса. Деструкторы вызываются в обратном порядке -сначала для производного, затем для базового;



-в заголовке конструктора производного класса может быть явно указан вызов конструктора базового класса с параметрами. Он может быть без имени, а может быть с именем базового класса. Если базовых классов несколько, то в вызовы конструкторов базовых классов должны быть перечислены через запятую и должны быть с поименованы.

Принцип наследования следует воспринимать прежде всего в рамках программирования " от класса к классу" .


Начало  Назад  Вперед



Книжный магазин