Sobes.tech
Junior — Middle

Peut-on définir en C++ une classe contenant uniquement des fonctions virtuelles pures, et qui ne peut pas être instanciée directement ?

sobes.tech IA

Réponse de l'IA

Oui, en C++, il est possible de définir une classe ne contenant que des fonctions virtuelles pures, et une telle classe ne peut pas être créée directement. Cette classe est appelée classe abstraite. Elle sert d'interface ou de classe de base pour les héritiers qui doivent implémenter toutes les fonctions virtuelles pures.

Exemple :

class Interface {
public:
    virtual void doSomething() = 0; // fonction virtuelle pure
    virtual ~Interface() = default;
};

// Impossible de créer un objet Interface directement :
// Interface obj; // erreur de compilation

class Implementation : public Interface {
public:
    void doSomething() override {
        // implémentation
    }
};

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