C ++ абстрактный класс с некоторой реализацией - PullRequest
5 голосов
/ 10 января 2012

Я хочу создать абстрактный класс в c ++ с одним, но с некоторой реализацией по умолчанию.так что каждый класс, который его наследует, будет иметь поведение по умолчанию, но вы не можете создать экземпляр базового класса.но если я отмечу foo как чисто виртуальный, я не смогу добавить к нему реализацию.

class Base
{
public:
    virtual void foo() =0; //Now I can't add foo implementation
};

Мое решение состояло в том, чтобы не использовать его как чисто виртуальный, а просто скрыть конструктор.Мне интересно, можно ли пометить класс как чистый, но все же есть какая-то реализация?

1 Ответ

9 голосов
/ 10 января 2012

Вы можете добавить реализацию к чисто виртуальной функции .Производные классы могут использовать реализацию по умолчанию, явно вызывая метод базового класса.

...