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

П_1_5_Наследование

.pdf
Скачиваний:
14
Добавлен:
03.06.2015
Размер:
179.53 Кб
Скачать

Лекция №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

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