Не пойму для чего нужен виртуальный метод в классе?
Например:
virtual void onShutdown();
Все перерыл не могу найти. В гугл не посылать=)
Справку по с++ не могу найти:(
Другие языки программирования и технологии
С++ виртуальный метод
Например:
Есть класс Window. Стандартный виндовый какой-нить. Или из какой-нить библиотеки левой. Не важно.
У него есть метод onShutdown() который меня не устраивает. Вот все в этом классе меня устраивает, а onShutdown не устраивает. Что же делать? А вот что:
надо создать класс myWindow. И унаследовать его от класса Window.
Так как в классе Window метод onShutdown виртуальный, то я его могу реализовать в своем классе myWindow так, как захочу.
Остальные методы меня устраивают, знач их я трогать не буду.
Потом в коде я создам экземпляр класса myWindow. И буду работать с ним так, как и раньше работал с Window. Только onShutdown уже будет вызываться тот, что мне нужен. А если бы onShutdown не был виртуальным, то нихера бы не получилось.
Это всего-лишь один из примеров применения...
Есть класс Window. Стандартный виндовый какой-нить. Или из какой-нить библиотеки левой. Не важно.
У него есть метод onShutdown() который меня не устраивает. Вот все в этом классе меня устраивает, а onShutdown не устраивает. Что же делать? А вот что:
надо создать класс myWindow. И унаследовать его от класса Window.
Так как в классе Window метод onShutdown виртуальный, то я его могу реализовать в своем классе myWindow так, как захочу.
Остальные методы меня устраивают, знач их я трогать не буду.
Потом в коде я создам экземпляр класса myWindow. И буду работать с ним так, как и раньше работал с Window. Только onShutdown уже будет вызываться тот, что мне нужен. А если бы onShutdown не был виртуальным, то нихера бы не получилось.
Это всего-лишь один из примеров применения...
Они нужны чтобы через указатель базового класса вызвать функцию производного. Вслучае если указатель базового типа по факту ссылается на обект производного класса. Убери слово Virtual - сравнии - поймеш!
class A
{
public:
virtual void f(void)
{
cout<<"AAAAAA";
}
};
class B: public A
{
public:
void f(void)
{
cout<<"BBBBBB";
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A *te;
A a;
B b;
te=&b;
te->f();
getch();
return 0;
}
class A
{
public:
virtual void f(void)
{
cout<<"AAAAAA";
}
};
class B: public A
{
public:
void f(void)
{
cout<<"BBBBBB";
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A *te;
A a;
B b;
te=&b;
te->f();
getch();
return 0;
}
виртуальные методы определяются пользователем в дочернем классе при наследовании.
Андрей Кузнецов
Повторюсь: Зачем они нужны?
Похожие вопросы
- Виртуальные методы и функции
- Как увелчить размер файла подкачки виртуальной памяти?
- Объясните чайнику - про виртуальную машину
- Как использовать значение переменной как ИМЯ переменой или метода,,,? С#
- Приведите, пожалуйста, пример ( адекватный для новичка ) использования методов одного класса в методах другого С++
- Java, получение названий методов и вызов методов по имени
- Ребята, программисты, нужна помощь касательно виртуальной обороны. Нужно для рассказа:)
- Виртуальные функции в c#,зачем они?
- C++. Зачем определять чистую виртуальную функцию?
- Паскаль метод Якоби.