Re: Virtual function
От: whiteForest  
Дата: 25.10.02 11:02
Оценка: 1 (1)
Здравствуйте DemAS, Вы писали:

<....>

DAS>
DAS>Account *pAccount = pChecking;
pAccount->>PrintBalance();
DAS>


DAS> А вот так:


DAS>
pChecking->>PrintBalance();
DAS>


DAS> что не пойдет ?

без преведения типа будет использоваться виртуальная таблица CheckingAccount класса, поэтому вызовется не Account::PrintBalance, а CheckingAccount::PrintBalance.

DAS> Поясните, ГДЕ ВЫГОДНО использовать виртуальные функции ?


Выгодно использовать в ООП

избитый пример.
у тебя есть классы собака, кошка, курица, лось и слон.

их можно разбить на три класса Домашние животные, животные, дикие животные.

схема наследования
Животные
Домашние животные Дикие животные
собака, кошка, курица лось, слон

у каждого из класса есть виртальный метод, среднее время жизни.
для каждого животного ты переопределяешь эту функцию.

далее у тебя есть
Животные rgЖивотные[5] = {слон, кошка и т.д};
и ты можешь вызывая виртуальный метод о среденем времени жизни не приводя тип узнать для каждого его.

DAS>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.