Лекция
Привет, сегодня поговорим про виртуальные функции, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое виртуальные функции , настоятельно рекомендую прочитать все из категории С++ (C plus plus).
К механизму виртуальных функций обращаются в тех случаях, когда в каждом производном классе требуется свой вариант некоторой компонентной функции. Классы включающие такие функции называются полиморфными и играют особую роль в ООП.
Рассмотрим как ведут себя при наследовании не виртуальные компонентные функции с одинаковыми именами, типами и сигнатурами параметров.
Пример 2.3.1
Пример 2.3.1
class base
{
public :
void print(){cout<<“\nbase”;}
};
class dir : public base
{
public:
void print(){cout<<“\ndir”;}
};
void main()
{
base B,*bp = &B;
dir D,*dp = &D;
base *p = &D;
bp –>print(); // base
dp –>print(); // dir
p –>print(); // base
}
В последнем случае вызывается функция print базового класса, хотя указатель p настроен на объект производного класса. Об этом говорит сайт https://intellect.icu . Дело в том, что выбор нужной функции выполняется при компиляции программы и определяется типом указателя, а не его значением. Такой режим называется ранним или статическим связыванием. Большую гибкость обеспечивает позднее (отложенное) или динамическоесвязывание, которое предоставляется механизмом виртуальных функций. Любая нестатическая функция базового класса может быть сделана виртуальной, для чего используется ключевое слово virtual.
Пример
class base
{
public:
virtual void print(){cout<<“\nbase”;}
. . .
};
// и так далее – см. предыдущий пример.
В этом случае будет напечатано
base
dir
dir
В общем, мой друг ты одолел чтение этой статьи об виртуальные функции. Работы впереди у тебя будет много. Смело пиши комментарии, развивайся и счастье окажется в твоих руках. Надеюсь, что теперь ты понял что такое виртуальные функции и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории С++ (C plus plus)
Из статьи мы узнали кратко, но содержательно про виртуальные функции
Комментарии
Оставить комментарий
С++ (C plus plus)
Термины: С++ (C plus plus)