Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Виды порождения классовВ иерархии классов соглашение относительно доступности компонентов класса следующее:
private член класса может использоваться только функциями - членами и функциями - "друзьями'' данного класса. В производном классе он недоступен. protected - то же, что и private, но дополнительно член класса с данным атрибутом доступа может использоваться функциями-членами и функциями - "друзьями" классов, производных отданного. public - член класса может использоваться любой функцией, которая является членом данного или производного класса, а также к public - членам возможен доступ извне через имя объекта. Допускается множественное наследование, т. е. возможность для некоторого класса наследовать компоненты нескольких никак не связанных между собой базовых классов. Пример. class B1 {...}; class B2 {...}; class B3 {...}; class B4: public B1, protected B2, private B3 {...}; Стандартные преобразования при порождении. Так как порожденный класс получен из базового, то есть содержит в себе базовую часть, то между порожденным и базовым классом возможны неявные преобразования: - объект порожденного класса неявно преобразуется к объекту базового класса; - ссылка на порожденный класс неявно преобразуемся к ссылке на базовый класс; - указатель на порожденный класс неявно преобразуется к указателю на базовый класс. Пример. Рассмотрим иерархию порождений: class Device {...}; class Display: public Device {...}; class Keyboard: public Device {...}; class Mouse: public Device {...}; Определим класс Event, не имеющий отношения к данной иерархии: class Event {...}; Пусть есть внешняя функция: extern void f(Device &); тогда для объектов вышеописанных классов: Device dev; Display disp; Keyboard keyb; Mouse ms; Event ev; Функция будет работать следующим образом: f(dev); // правильно f(ms); // правильно, т.к. ссылка на Mouse, f(keyb); // Keyboard, Display неявно f(disp); // преобразуется к ссылке на Device f(ev); // Ошибка: для класса Event класс Device // не является базовым, поэтому // преобразования не происходит.
|