«Эффективный C ++» Майерс упоминает, почему чистая виртуальная функция имеет тело: производные классы, реализующие эту чистую виртуальную функцию, могут вызывать эту реализацию smwhere в своем коде. Если часть кода двух разных производных классов схожа, тогда имеет смысл перемещать ее в иерархии, даже если функция должна быть чистой виртуальной.
см. Здесь здесь .