Comment déclarer une interface en C++ ? (fonctions virtuelles pures et classes abstraites)
Bonjour ! Je viens de commencer à apprendre le C++ après Java, et je suis très confus par l'absence du mot-clé `interface`, comme en Java ou C#. En Java, j'avais l'habitude de faire ceci :
```java
public interface Drawable {
void draw();
void resize(int width, int height);
}
```
Mais en C++, je ne trouve pas d'équivalent direct. Je sais qu'en C++ il existe des classes abstraites avec des fonctions virtuelles pures, mais je ne suis pas sûr de comment les déclarer et les utiliser correctement.
Par exemple, j'ai essayé d'écrire ce code :
```cpp
class Drawable {
public:
virtual void draw() = 0;
virtual void resize(int width, int height) = 0;
};
```
Mais j'ai des questions :
1. Faut-il ajouter un destructeur virtuel ? Si oui, doit-il être purement virtuel ?
2. Faut-il empêcher la copie des objets de cette classe ?
3. Comment hériter correctement de cette classe et redéfinir les méthodes ?
4. Existe-t-il des "best practices" pour déclarer des interfaces en C++ ?
J'ai entendu parler de l'héritage multiple et du diamant.