Type composé

Dans le de l'informatique, les types de composé de sont un Datatypes qui peut être construit dans un langage de programmation hors des types primitifs du de cette langue et d'autres types composés. L'acte de construire un type composé est connu comme composition en .

Structures et classes de C/C++

Un struct est notion de s du C 's et le C++ 'd'un type composé, un datatype qui compose un ensemble fixe de champs marqués ou de membres de . Il est soi-disant en raison du mot-clé de struct utilisé en les déclarant, qui est abréviation la structure de ou, plus avec précision, la structure de données définie pour l'utilisateur de .

Dans C++, la seule différence entre un struct et une classe est le niveau d'accès de de défaut , qui est le privé pour les classes et le public de pour structs.

Noter que tandis que les classes et le mot-clé de class étaient complètement nouveaux dans C++, le langage de programmation du C déjà a eu un type brut de structs. à toutes fins pratiques, forme de C++ structs un superjeu de C structs : pratiquement tout le C valide structs sont C++ valide structs avec la même sémantique.

Déclaration

Une déclaration de struct se compose d'une liste de champs, qui peuvent avoir n'importe quel type. Tout le stockage exigé pour un objet de struct est la somme des conditions de stockage de tous les champs, plus n'importe quelle remplissage interne.

Par exemple : lang=" de compte de struct { account_number d'international ; *first_name de char ; *last_name de char ; équilibre de flotteur ; } ;

définit un type, visé comme struct Account. Pour créer une nouvelle variable de ce type, nous pouvons écrire le myAccount de compte de struct ; ce qui a un composant de nombre entier, accédé par myAccount.account_number, et un composant à point mobile, accédé par myAccount.balance, aussi bien que les composants de first_name et de last_name. La structure myAccount contient chacune des quatre valeurs, et chacun des quatre champs peut être changé indépendamment.

Puisque l'inscription du struct account à plusieurs reprises en code devient encombrante, il n'est pas peu commun de voir un rapport de typedef en code de C pour fournir un synonyme plus commode pour le struct. Par exemple : lang=" de struct Account_ de typedef { account_number d'international ; *first_name de char ; *last_name de char ; équilibre de flotteur ; } Compte ;

En code de C++, le typedef n'est pas nécessaire parce que les types définis using struct sont déjà une partie du namespace régulier, ainsi le type peut désigné sous le nom du struct Account ou simplement du Account.

En tant qu'autre exemple, un type composé de vecteur tridimensionnel qui emploie le type de données de virgule flottante pourrait être créé avec : lang=" de vecteur de struct { flotteur X ; flotteur y ; flotteur z ; } ;

Une variable appelée velocity avec un type composé de Vector serait déclarée comme vitesse de Vector ; Des membres de du velocity seraient accédés using une notation de point. Par exemple, velocity.x = 5 ; placerait le composant de x de velocity égal à 5.

De même, une structure de couleur a pu être créée using : lang=" de couleur de struct { rouge d'international ; vert d'international ; bleu d'international ; } ;

Dans les graphiques 3D, vous habituellement devez maintenir la position et la couleur de chaque sommet. L'one-way pour faire ceci serait de créer un type composé de Vertex, using les types composés précédemment créés de Vector et de Color : lang=" de sommet de struct { Position de vecteur ; Couleur de couleur ; } ;

Instanciation

Créer une variable du type Vertex using le même format qu'avant : Vertex v ;

Accès de membre

Assigner les valeurs aux composants de v comme ainsi :

v.blue = 255 ;

primitif Subtyping

L'utilisation primaire de struct est pour la construction des datatypes complexes, mais parfois elle est employée pour éviter des conventions standard de C pour créer le primitif subtyping . Par exemple, les protocoles communs d'Internet se fondent sur le fait que les compilateurs C insèrent la remplissage entre les champs de struct des manières prévisibles ; ainsi le code ifoo_old_stub de struct { long x, y ; } ; struct ifoo_version_42 { long x, y, z ; *name de char ; longtemps a, b, c ; } ; operate_on_ifoo vide (ifoo_old_stub de struct *) ; struct ifoo_version_42 s ; …. operate_on_ifoo (&s) ; travaillera correctement.

Types de fonction

La fonction de dactylographie (ou type de les signatures sont construites des types primitifs et composés, et peuvent servir de types eux-mêmes en construisant les types composés : lang=" de struct de typedef { international X ; international y ; } Point ;

double de typedef (*Metric) (point p1, point p2) ;

struct de typedef { Centre de point ; double rayon ; Métrique métrique ; } Cercle ;

Voir également

Composition en objet de

.

Random links:Câble coaxial de liaison | Psychologie analytique | Parc d'Alexandra, Manchester | Point de Hollie | Tipo_compuesto