Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры(ооп) кроме 45,46,52.docx
Скачиваний:
2
Добавлен:
24.09.2019
Размер:
117.21 Кб
Скачать

8.Наследование простое

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

сlass имя_производного_класса : [атрибут] имя_базового_класса {тело_произв_класса} [список объектов]; Двоеточие отделяет производный класс от базового. Производный класс наследует атрибуты компонент базового класса в зависимости от атрибутов базового класса следующим образом:

если базовый класс имеет атрибут public, то компоненты public и protected базового класса наследуются с атрибутами public и protected в производном классе. Компоненты private остаются private-компонентами базового класса; если базовый класс имеет атрибут protected, то компоненты public и protected базового класса наследуются с атрибутом protected в производном классе. Компоненты private остаются private-компонентами базового класса; если базовый класс имеет атрибут private, то компоненты public и protected базового класса наследуются с атрибутами private в производном классе. Компоненты private остаются private-компонентами базового класса. Отмеченные типы наследования называются: внешним, защищенным и

внутренним.

Class base { p

rivate:

public:

protected:

};

class proizv_priv: private base{любые компоненты};

class proizv_publ: public base{любые компоненты};

class proizv_prot: protected base{любые компоненты};

9.Множественное наследование

В языке С++ имеется возможность образовывать производный класс от нескольких базовых классов. Общая форма множественного наследования имеет вид:

class имя_произв_класса : имя_базового_кл 1,…,имя_базового_кл N

{ содержимое класса

}

Иерархическая структура, в которой производный класс наследует от несколько базовых классов, называется множественным наследованием. В этом случае производный класс, имея собственные компоненты, имеет доступ к protected- и public-компонентам базовых классов.

Конструкторы базовых классов при создании объекта производного класса вызываются в том порядке, в котором они указаны в списке при объявлении производного класса.

10.Виртуальные функции

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

Заметим, что деструктор может быть виртуальным, а конструктор нет.

class A { . . . public: virtual void fun() {} };

class B : public A { . . . public: void fun() {} };

class C : public B { . . . public: . . . };

main() { A a,*p=&a; B b; C c; p->fun();

p=&b; p->fun(); p=&c; p->fun(); }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]