Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
{ B b (5);
cout<<endl<< “ b =” << b.GetY ();
cout<<endl<< “ a =” << b.GetX ();
}
В производный класс B включаются все данные и функции родителя А, при этом данное x -недоступно для прямого обращения из объектов класса B, но к нему можно обращаться из доступных компонентных функций класса А, которые стали полноправными членами класса B: b.GetX ();
Таким образом, через открытую функцию класса A GetX() мы получаем доступ к закрытому данному этого класса (x), а функция GetY () класса B предоставила доступ к закрытому данному (y) производного класса.
В main создается объект производного класса B, компонентному данному которого передается значение 5.
Данное класса А инициируется значением 0.
При создании объекта производного класса сначала автоматически вызывается конструктор базового класса, который создает объект базового класса, после этого вызывается конструктор производного класса, дополняющий объект составляющими производного класса.
В нашем случае сначала вызывается конструктор A (), который по умолчанию инициирует x значением 0, а затем вызывается B(5), инициирующий y значением 5.
Деструкторы автоматически вызываются в обратном порядке в соответствии с порядком уничтожения объекта. Сначала уничтожается то, что добавилось в производном классе, а затем и базовая часть.
Результат программы:
A! B!
b= 5
a= 0
DB DA
Наличие производного класса не запрещает создавать отдельно объекты базового класса, например:
A a (7);
Дата публикования: 2014-11-28; Прочитано: 225 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!