Здравствуйте DemAS, Вы писали:
<....>
DAS>DAS>Account *pAccount = pChecking;
pAccount->>PrintBalance();
DAS>
DAS> А вот так:
DAS>pChecking->>PrintBalance();
DAS>
DAS> что не пойдет ?
без преведения типа будет использоваться виртуальная таблица CheckingAccount класса, поэтому вызовется не Account::PrintBalance, а CheckingAccount::PrintBalance.
DAS> Поясните, ГДЕ ВЫГОДНО использовать виртуальные функции ?
Выгодно использовать в ООП
избитый пример.
у тебя есть классы собака, кошка, курица, лось и слон.
их можно разбить на три класса Домашние животные, животные, дикие животные.
схема наследования
Животные
Домашние животные Дикие животные
собака, кошка, курица лось, слон
у каждого из класса есть виртальный метод, среднее время жизни.
для каждого животного ты переопределяешь эту функцию.
далее у тебя есть
Животные rgЖивотные[5] = {слон, кошка и т.д};
и ты можешь вызывая виртуальный метод о среденем времени жизни не приводя тип узнать для каждого его.
DAS>