Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции программирование / polevoy_cpp_2012_spring_lecture_08

.pdf
Скачиваний:
24
Добавлен:
20.04.2015
Размер:
122.08 Кб
Скачать

Функции, которые не наследуются

конструкторы и деструкторы

operator=

31.03.2012

cppNewb.ru

31

Конструктор копирования при наследовании (пример)

Der::Der(const Der& copy)

: Base(copy)

// инициализация полей экземпляра

{

//дополнительная работа

//конструктора

}

31.03.2012

cppNewb.ru

32

Оператор присваивания при наследовании (пример)

Der&

Der::operator=(const Der& copy)

{

CBase::operator=(copy);

// остальная работа оператора

}

31.03.2012

cppNewb.ru

33

Статические функции (при наследовании)

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

переопределение скрывает все

остальные перегруженные версии в

базовом классе

т.е. аналогично обычным функциям

31.03.2012

cppNewb.ru

34

Выбор между композицией и наследованием

композиция (b содержит a)

отношение “has-a”

повторное использование кода

наследование (b является a)

отношение “is-a”

повторное использование интерфейса

31.03.2012

cppNewb.ru

35

Закрытое наследование

лучше использовать композицию

реализует “ограниченную реализацию”

пользователь не имеет доступа к базовой функциональности

экземпляр производного класса не может интерпретироваться как экземпляр базового класса

31.03.2012

cppNewb.ru

36

Закрытое наследование (пример)

// in base.h

// in der.h

class Base

class Der

{

: private CBase

public:

{

int aF();

using CBase::aF;

int aF(int a);

using CBase::bF;

void bF();

};

};

 

31.03.2012

cppNewb.ru

37

Защищенность

ключевое слово protected

защищенный член ведет себя как

открытый для членов производных классов

закрытый для всех остальных функций

31.03.2012

cppNewb.ru

38

Защищенное наследование

реализует

открытую реализацию для производных и дружественных классов

“ограниченную реализацию” для других

классов

на практике используется редко

31.03.2012

cppNewb.ru

39

Матрица доступа

 

методы и

методы и

пользов

 

друзья

друзья

атели

 

класса

производных

 

 

 

 

 

 

 

 

public

есть

есть

есть

 

 

 

 

protected

есть

есть

нет

 

 

 

 

private

есть

нет

нет

 

 

 

 

31.03.2012

cppNewb.ru

40