Sobes.tech
Junior — Middle

É possível definir em C++ uma classe que contenha apenas funções virtuais puras e que não possa ser criada diretamente?

sobes.tech IA

Resposta da IA

Sim, em C++ é possível definir uma classe que contenha apenas funções virtuais puras, e tal classe não pode ser criada diretamente. Essa classe é chamada de classe abstrata. Ela serve como interface ou classe base para os herdeiros que devem implementar todas as funções virtuais puras.

Exemplo:

class Interface {
public:
    virtual void doSomething() = 0; // função virtual pura
    virtual ~Interface() = default;
};

// Não é possível criar um objeto Interface diretamente:
// Interface obj; // erro de compilação

class Implementation : public Interface {
public:
    void doSomething() override {
        // implementação
    }
};

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