Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Фитч   (19.03.2007 в 11:33)
> Так что же значит слово virtual?
Суть такая: если в базовом классе есть функции, объявленные с virtual (необязательно конструктор/деструктор), а в подклассе они переопределены, то если вызвать этот метод базового класса, то на этапе исполнения будет решаться, метод какого класса (базового или кого-то из наследников) будет вызван (полиморфизм, позднее связывание - знакомы?) Для ясности пример:

struct Base
{
 virtual void showMessage()
 {
  fprintf(stdout,"Message from Base!");
 }
};
 
struct SubClass : public Base
{
 virtual void showMessage()
 {
  fprintf(stdout,"Message from Subclass");
 }
};

void alert(Base* o)
{
 o->showMessage();
}

/* ... */

Base* b = new Base;
SubClass* s = new SubClass;

alert(b);
alert(s);
}

Будет выведено:
Message from Base!
Message from subclass

В случае с вашими классами это будет нужно для корректной работы деструктора в завизимости от подкласса, если вы все объекты будете обрабатывать как Base


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: