Виртуальныефункции Виртуальная функция – это функция-член, чьё осуществление может быть
подменено в классе-потомке. В этом примере функция-член talk() (определена в
class Mammal) отмечена как virtual. Это означает, что классы-потомки могут
выбирать, либо могут не выбирать осуществлять их собственную версию того, что
функция-член talk() значит.
Чисто виртуальные функции (и абстрактные классы) Чисто виртуальные функции это из тех, чьё осуществление вам требуется
подменить в классах-потомках. Функция walk() в классе Mammal чисто
виртуальная. Она была объявлена таким образом:
virtual void walk() = 0;
Вот эта “= 0” часть в конце предыдущего кода, это то, что делает функцию чисто
виртуальной.
Функция walk() в классе Mammal чисто виртуальная и это делает класс Mammal
абстрактным. Абстрактный класс в С++ это любой класс, имеющий как минимум
одну виртуальную функцию.
Если класс содержит чисто виртуальную функцию и является абстрактным, то этот
класс не может быть использован напрямую для создания экземпляра. То есть, вы
не можете создать объект Mammal сейчас, от записи чисто виртуальной функции
walk(). Если вы попытаетесь выполнить следующий код, вы получите ошибку:
int main()
{
Mammal mammal;
}
125 |
С т р а н и ц а
Если вы попытаетесь создать объект Mammal, то вы получите следующую ошибку: