П_1_5_Наследование
.pdfЛекция №5
●Наследование
●Полиморфизм
●Friend-классы
Наследование
Наследование — механизм позволяющий описать новый класс на основе уже существующего, при этом свойства и функциональность родительского класса заимствуются новым классом.
Класс, от которого произошло наследование, называется базовым или родительским. Классы, которые произошли от базового, называются потомками, наследниками или
производными классами.
Синтаксис наследования
сlass имя_производного: имя_базового_класса {};
C++ позволяет наследоваться по разным зонам видимости:
class B : public A{ |
//public наследование |
}; |
|
class C : protected A{ |
//protected наследование |
}; |
|
class Z : private A{ |
//private наследование |
}; |
|
Зоны видимости и наследование
В зависимости от того, какой тип наследования используется, изменяется доступ к членам базового класса для клиентов производного.
class some { public:
int a; protected: int b; private: int c;
};
Пример
class derived : public some { public:
using some::b;
};
void f(derived& obj) { obj.b = 0; // ok
}
Дружественные классы
Дружественные классы воспринимаются исходным классом так же, как дружественные функции, им предоставляются те же привелегии.
Объявление в классе: class some { public:
friend class some_friend; };
Закрытые переменные: метод 1
Допустим, у нас есть класс some и нам нужно обнулить закрытую переменную c. Первый метод:
● |
Модифицировать определение класса, |
|
|
|
добавив дружественную функцию или класс |
Метод 1
Закрытые переменные: метод 2
● Воспользоваться препроцессором
Препроцессор С/С++ — программный инструмент, изменяющий код программы для последующей компиляции и сборки. Этот препроцессор обеспечивает использование стандартного набора возможностей:
●Включение файла — #include
●Макроподстановки — #define
●Условная компиляция — #if, #ifdef, #else, #endif
Метод 2