Déclarer des interfaces en C
Question :
Comment définir une classe représentant une interface en C ? Est-ce réalisé grâce à une classe de base abstraite ?
Réponse :
Oui, une interface en C peut être définie comme une classe de base abstraite. Pour créer une interface :
-
Déclarez une classe abstraite pure :Cette classe ne doit contenir que des méthodes virtuelles pures, qui n'ont aucune implémentation. Les méthodes servent d'espaces réservés et forcent les classes dérivées à les implémenter.
class IDemo {
public:
virtual void OverrideMe() = 0;
};
Copier après la connexion
-
Classes dérivées : Les classes qui héritent de l'interface doivent implémenter toutes les méthodes virtuelles pures. Ils assurent l'implémentation concrète de l'interface.
class Child : public IDemo {
public:
virtual void OverrideMe() {
// Implement the method here
}
};
Copier après la connexion
-
Destructeur virtuel (facultatif) : Pensez à ajouter un destructeur virtuel à l'interface. Cela permet un transfert sécurisé de propriété du pointeur sans exposer la classe dérivée concrète.
class IDemo {
public:
virtual ~IDemo() {}
virtual void OverrideMe() = 0;
};
Copier après la connexion
Notes supplémentaires :
- Contrairement à d'autres langages, les interfaces C ne prend pas en charge l'héritage multiple.
- Le destructeur ne nécessite pas de corps puisque l'interface n'a pas de béton membres.
- Certains compilateurs peuvent avoir des problèmes avec les destructeurs virtuels vides, il est donc recommandé de ne pas inclure de corps.
- L'utilisation conjointe de fonctions virtuelles et en ligne pour le destructeur est acceptable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!