Maison  >  Article  >  développement back-end  >  Pourquoi `std::is_struct` ne fait-il pas la distinction entre les structures et les classes en C ?

Pourquoi `std::is_struct` ne fait-il pas la distinction entre les structures et les classes en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 14:56:31476parcourir

Why Doesn't `std::is_struct` Distinguish Between Structs and Classes in C  ?

Pourquoi std::is_struct ne fait pas la différence entre les structures et les classes

En C, vous pourriez rencontrer des situations où la distinction entre les classes et les structures est importante. Cependant, le trait de type std::is_struct ne fournit pas cette distinction. Comprendre pourquoi peut clarifier les idées fausses sur les classes et les structures.

Idée fausse : les structures et les classes sont de types différents

La déclaration "il n'y a aucune différence entre les structures et les classes sauf la visibilité" peut créer de la confusion. En réalité, C a des classes depuis 1985 et le mot-clé struct est destiné à la compatibilité ascendante avec C.

Réalité : tous les types déclarés avec class et struct sont des classes

Le mot-clé struct n'affecte que la visibilité par défaut des membres et des bases. Les deux types déclarés avec class et struct sont des classes.

Conclusion

std::is_struct ne fait pas de différence entre les structures et les classes car il n'y a aucune distinction en C . Les classes déclarées avec class et struct sont du même type et ont les mêmes règles de visibilité.

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