Sobes.tech
Junior — Middle

O que acontece ao chamar uma função declarada como virtual pura e como isso afeta a execução do programa?

sobes.tech IA

Resposta da IA

Uma função virtual pura em C++ é uma função declarada com = 0 na classe base, por exemplo:

class Base {
public:
    virtual void foo() = 0; // função virtual pura
};

Ela não tem implementação na classe base e requer que as classes derivadas a sobrescrevam.

Se por engano, uma função virtual pura for chamada diretamente (por exemplo, através de um ponteiro ou referência a um objeto da classe base que não possui implementação), o comportamento do programa é indefinido. Normalmente, a função __cxa_pure_virtual é chamada e o programa termina de forma anormal.

Assim, uma função virtual pura serve para criar classes abstratas e interfaces, e sua chamada sem implementação leva a um erro em tempo de execução.