Чистый виртуальный означает, что для создания экземпляра чистый виртуальный должен быть переопределен в некотором потомке класса, который объявляет чистую виртуальную функцию.Это может быть в создаваемом классе или любом промежуточном классе между базовым, который объявляет чистый виртуальный, и экземпляром, который создается.
Однако все еще возможно иметь промежуточные классы, производные от одного с чистымвиртуальный без переопределения этого чистого виртуального.Как и класс, который объявляет чистый виртуальный, эти классы могут использоваться только как базовые классы;Вы не можете создавать экземпляры этих классов, только те классы, которые являются производными от них, в которых реализован каждый чистый виртуальный объект.
Если требуется, чтобы потомок переопределил виртуальный, даже если промежуточный класс имеетуже сделал, ответ - нет, C ++ не предоставляет ничего, что, по крайней мере, предназначено для этого.Похоже, что вы могли бы взломать что-то вместе, используя множественное (возможно, виртуальное) наследование, поэтому будет присутствовать реализация в промежуточном классе, но попытка использовать это будет неоднозначной, но я не думал об этом достаточно, чтобы быть увереннымкак (или если) он будет работать - и даже если бы он это делал, он делал свое дело только при попытке вызова рассматриваемой функции, а не просто создавал экземпляр объекта.