Maison >développement back-end >C++ >Pourquoi `std::is_class` renvoie-t-il True pour les structures en C ?

Pourquoi `std::is_class` renvoie-t-il True pour les structures en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 02:50:30894parcourir

Why Does `std::is_class` Return True for Structs in C  ?

La distinction entre les structures et les classes en C

En C , beaucoup ont remarqué que le trait de type std::is_class renvoie vrai pour les deux classes et structures. Cela soulève la question de savoir pourquoi il n’y a pas de distinction claire entre les deux dans ce trait. On suppose généralement qu'en C les classes et les structures sont pratiquement identiques, mais est-ce vraiment le cas ?

Contrairement à la croyance populaire, C n'a pas pris en charge les structures depuis 1985. Chaque type déclaré à l'aide du mot-clé class ou struct est fondamentalement une classe. Le mot-clé struct, ainsi que les règles de visibilité uniques appliquées à ces déclarations de classe, ont été conservés uniquement pour des raisons de compatibilité descendante avec C.

Par conséquent, la raison pour laquelle C ne fait pas de distinction entre les classes et les structures dans std::is_class est parce que il n'y a pas de différence inhérente entre eux. Du point de vue du langage, tous les types définis à l'aide des deux mots-clés sont uniformément reconnus comme des classes.

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