лекции программирование / polevoy_cpp_2012_spring_lecture_08
.pdfКомпозиция (пример)
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 |