Maison  >  Article  >  développement back-end  >  Pourquoi n'y a-t-il pas de trait de type `std::is_struct` en C ?

Pourquoi n'y a-t-il pas de trait de type `std::is_struct` en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 15:10:31266parcourir

Why is There No `std::is_struct` Type Trait in C  ?

Pourquoi n'y a-t-il pas de trait de type std::is_struct ?

En C, il est courant d'utiliser std::is_class pour déterminer si un le type est une classe. Cependant, vous vous demandez peut-être pourquoi il n'y a pas de std::is_struct pour faire la distinction entre les structures et les classes.

L'idée fausse :

On suppose souvent que les structures et les classes sont des entités distinctes dans C . Cependant, il s'agit d'une idée fausse.

La vérité :

À partir de 1985, C a introduit un modèle de classe unifié, éliminant la distinction entre les structures et les classes. Le mot-clé struct est simplement un sucre syntaxique qui définit une classe avec une visibilité par défaut des membres.

Pourquoi aucun trait de type :

Puisque les structures et les classes sont essentiellement du même type dans C , il n'est pas nécessaire d'avoir un trait de type std::is_struct distinct. std::is_class identifie correctement les structures et les classes en tant que classes.

Conclusion :

L'absence de std::is_struct reflète le fait que C considère les structures et les classes comme une seule et même chose. Le trait de type std::is_class capture de manière adéquate la notion de types de classe sans avoir besoin d'une vérification séparée des structures.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn