• [^] # Re: C, parce que je suis pour les objets !

    Posté par (site web personnel, Mastodon) . En réponse au sondage Quel langage utilisez-vous le plus au quotidien ?. Évalué à 1.

    Oui, il y a tout à fait moyen de faire du semi-orienté objets en C « normal », et du vrai orienté objets avec un object system comme GObject.

    En C pur, une classe est une structure. Pour créer un objet (l'instance d'une classe), on alloue dynamiquement la structure. La variable self est un simple pointer, qu'on passe en premier argument à chaque fonction. Pour faire du polymorphisme, on peut créer sois-même une vtable, c'est-à-dire une structure contenant des pointeurs de fonctions.

    Avec un object system, on peut faire plus de choses facilement, comme avoir des interfaces, des classes abstraites, l'héritage, etc. Mais en C ça demande un peu de « code de remplissage » (boilerplate), puisque la syntaxe du C n'est pas prévue pour ça.