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

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

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

Композиция (пример)

class Man

{

private:

string m_name;

string m_secName;

};

class CStudent

{

private:

Man m_man;

Group m_group;

};

31.03.2012

cppNewb.ru

11

Наследование (отношение)

способ создания новых классов

позволяет явно отражать общность классов (новый класс наследует члены)

31.03.2012

cppNewb.ru

12

Понятия иерархии наследования

базовый (родительский) класс

производный (дочерний) класс

31.03.2012

cppNewb.ru

13

Наследование (пример)

class Man

{

private:

string m_name;

string m_secName;

};

class CStudent : public Man

{

private:

Group m_group;

};

31.03.2012

cppNewb.ru

14

Синтаксис наследования

сlass Derived

:[private|protected|public] Base

{

// class body

};

31.03.2012

cppNewb.ru

15

Умолчательный спецификатор типа наследования

private для классов

public для структур

спецификатор рекомендуется указывать явно

пример:

class Derived

: public Base

{

};

31.03.2012

cppNewb.ru

16

Иерархии понятий

данные

ответственности (интерфейсы)

31.03.2012

cppNewb.ru

17

Повышающее преобразование

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

повышающее приведение типа

приведение указателя (ссылки) производного типа к указателю (ссылке) базового типа

31.03.2012

cppNewb.ru

18

Повышающее преобразование (пример)

// class Student : public Man class Student student;

class Man* pMan = &student;

pMan->name();

Student является Man, поэтому Student*

можно использовать как Man*

31.03.2012

cppNewb.ru

19

Повышающее преобразование (пример)

// class Student : public Man

void printInfo(ostream& ostr,

Man& man);

Student me;

printInfo(cout, me);

31.03.2012

cppNewb.ru

20