Тип возврата виртуальной функции должен быть того же типа, что и в базовом классе, или ковариантным. Но почему у нас есть это ограничение?