Avatar ·

Comment déclarer une interface en C++ ? Fonctions virtuelles pures et classes abstraites

Bonjour à tous ! J'ai récemment commencé à apprendre le C++ après Java, et j'ai eu un problème avec la déclaration d'interfaces. En Java, j'avais l'habitude d'écrire `interface MyInterface { void doSomething(); }`, et n'importe quelle classe peut l'implémenter. \n\nMais en C++, je ne trouve pas d'équivalent du mot-clé `interface`. J'ai essayé de créer une classe avec des fonctions virtuelles ordinaires, mais le compilateur se plaint que la classe ne peut pas être instanciée si la fonction n'est pas purement virtuelle. Voici ce que j'ai écrit :\n\n```cpp\nclass IShape {\npublic:\n virtual double area(); // Erreur : pas purement virtuelle\n virtual void draw(); // Erreur aussi\n};\n```\n\nEnsuite, j'ai ajouté `= 0`, et le code a compilé :\n\n```cpp\nclass IShape {\npublic:\n virtual double area() = 0;\n virtual void draw() = 0;\n};\n```\n\nMais je ne suis pas sûr que ce soit la bonne façon de déclarer une interface. Dois-je rendre le destructeur virtuel ? Qu'en est-il de l'héritage multiple ? Et comment faire si je veux que l'interface ait une implémentation commune pour certaines méthodes ?\n\nMer