Как указал juanchopanza, могут быть веские причины иметь частные виртуальные машины. Но у абстрактного класса может быть причина иметь не виртуальные личные данные.
Возможно, у вас создается впечатление, что абстрактный класс не имеет элементов данных и только чистые виртуальные функции? Это не тот случай. Класс может иметь много членов данных и не виртуальных функций-членов и все еще быть абстрактным, если он имеет хотя бы одну чистую виртуальную функцию-член.
class abstract_base {
public:
//functionality that derived classes must implement:
virtual int func1() = 0;
//functionality that derived classes can't override:
int get_count() const { return count_; }
private:
int count_;
};
Возможно, это глупый пример, но вы получаете идею.