Sobes.tech
Back to questions
Junior — Middle
79

Можно ли в C++ определить класс, содержащий только чисто виртуальные функции, и при этом его нельзя создать напрямую?

Companies where asked
ГК Адепт

Answer from AI

sobes.tech AI

Да, в C++ можно определить класс, содержащий только чисто виртуальные функции, и такой класс нельзя создать напрямую. Такой класс называется абстрактным классом. Он служит интерфейсом или базовым классом для наследников, которые должны реализовать все чисто виртуальные функции.

Пример:

class Interface {
public:
    virtual void doSomething() = 0; // чисто виртуальная функция
    virtual ~Interface() = default;
};

// Нельзя создать объект Interface напрямую:
// Interface obj; // ошибка компиляции

class Implementation : public Interface {
public:
    void doSomething() override {
        // реализация
    }
};

int main() {
    Implementation impl;
    impl.doSomething();
}