; Vendorl::v(); } void f() con
Автор admin Среда, 17 июня 2009 11:32
; Vendorl::v(); } void f() const { cout « “Pastel::f()” « endl: Vendorl::f(): } void g() const { cout « “Pastel::g()” « endl: } -PastelО { cout « “-PastelO” « endl: } }: int mainO { PastelS pip = *new Pastel; MyBaseS mp = pip; // Повышающее преобразование cout « “calling f()\n”: mp.fO; // Правильное поведение cout « “calling g()\n”; mp.gO; // Новое поведение cout « “calling A(plp)\n”; Мы встречали такое в коммерческих библиотеках С++, по крайней мере, в ранних. 468 Глава 9 • Множественное наследование А(р1р): // Старое поведение cout « “calling B(plp)\n”: B(plp); // Старое поведение cout « “delete mp\n”; // Удаление ссылки на объект в куче: delete ∓ // Правильное поведение } III:- В классе MyBase (не использующем множественное наследование) и функция f(), и деструктор объявлены виртуальными, а в интерфейс добавлена новая виртуальная функция д(). Теперь мы должны заново создать каждый из производных классов исходной библиотеки, подключая к нему новый интерфейс средствами множественного наследования. Функциям Pastel::v() и Pastel ::f() достаточно вызвать свои прототипы из базового класса. Но тепер
Комментарии закрыты.
Последние комментарии