Вызвать чистый виртуальный метод напрямую через указатель на базовый класс с абстрактным методом или через объект этого класса невозможно, так как он не имеет определения в базовом классе.
Однако, чистый виртуальный метод может быть вызван из конструктора или деструктора производного класса, в котором этот метод имеет реализацию. При этом вызов будет разрешен в статическом режиме, будет вызвана реализация того класса, в конструкторе или деструкторе которого происходит вызов.
Пример вызова из конструктора производного класса:
cpp
В данном примере, при создании объекта obj класса Derived, будет вызван конструктор Derived, в котором происходит вызов pure_virtual_method(). Поскольку в классе Derived есть реализация этого метода, он будет успешно вызван.
При попытке вызвать чистый виртуальный метод из конструктора или деструктора абстрактного базового класса, в котором он объявлен, произойдет нарушение выполнения (undefined behavior), так как на момент выполнения конструктора или деструктора базового класса vtable еще не полностью построена или уже разрушена, и соответствующая реализация в производном классе недоступна.
Также можно вызвать чистый виртуальный метод из производного класса, используя квалификацию области видимости (Base::pure_virtual_method()), но это возможно только из реализации чистого виртуального метода в производном классе, если он вызывает реализацию из базового класса (чего для чистого виртуального метода нет) или другую функцию, которая в свою очередь вызывает чистый виртуальный метод (что также приводит к неопределенному поведению), или для вызова невиртуального метода с таким же именем из базового класса.
Правильный способ взаимодействия с логикой, представленной чистым виртуальным методом, заключается в создании объекта производного класса и вызове этой логики через указатель или ссылку на базовый класс (полиморфизм).
cpp
Таким образом, "вызвать чистый виртуальный метод" в общепринятом смысле (через объект или указатель на базовый класс, не имеющий определения) невозможно. Вызов возможен только из конструктора или деструктора производного класса с его реализацией, или косвенно, через полиморфизм, создав объект производного класса.