Objets

De RAD Studio
Aller à : navigation, rechercher

Remonter à Déclarations - Index

Un objet est une région spécifique de la mémoire qui peut contenir une valeur fixe ou variable (ou un ensemble de valeurs). (Le mot objet employé dans ce sens ne doit pas être confondu avec le terme plus général utilisé dans les langages orientés objet). Chaque valeur possède un nom et un type (appelé type de données) qui lui sont associés. Le nom permet d'accéder à l'objet. Il peut s'agir d'un simple identificateur ou d'une expression complexe qui désigne l'objet de façon unique. Le type sert à :

  • déterminer correctement les exigences d'allocation mémoire ;
  • interpréter les configurations de bits rencontrées dans l'objet durant les différents accès ;
  • contrôler, lors de certaines vérifications, que les affectations illégales sont bien détectées.

Le compilateur C++ de Embarcadero accepte tous les types de données standard, y compris les entiers signés et non signés de différentes tailles, les nombres en virgule flottante de différentes précisions, les structures, les unions, les tableaux et les classes. En outre, il est possible d'établir des pointeurs vers la plupart de ces objets et de les manipuler dans divers modèles mémoire.

Objets et déclarations

Les déclarations permettent d'établir la correspondance nécessaire entre identificateurs et objets. Chaque déclaration associe un identificateur à un type de données. La plupart des déclarations, appelées déclarations de définition, entraînent aussi la création de l'objet (où et quand), à savoir l'allocation de mémoire physique et son éventuelle initialisation. D'autres déclarations, dites de référence, permettent simplement d'indiquer au compilateur les identificateurs et les types. Un même identificateur peut avoir plusieurs déclarations de référence, notamment dans un programme multifichier ; en revanche, une seule déclaration de définition est autorisée.

De manière générale, un identificateur ne peut pas être légalement utilisé dans un programme avant son point de déclaration dans le code source. Les exceptions légales à cette règle, appelées références aval, concernent les classes, les étiquettes, les structures, les noms d'unions et les appels de fonctions non déclarées.

lvalue

Une lvalue est un localisateur d'objet : une expression qui désigne un objet. Un exemple de lvalue est l'expression *P, P étant une expression dont le résultat est un pointeur non NULL. Une lvalue modifiable est un identificateur ou une expression concernant un objet mémoire qui peut être atteint et modifié. Par exemple, un pointeur de type const sur une constante n'est pas une lvalue modifiable. En revanche, un pointeur sur une constante est modifiable, (mais sa valeur déréférencée ne l'est pas).

A l'origine, le l, correspondant à l'initiale du mot anglais "left", signifiait qu'une lvalue pouvait se trouver à gauche d'une instruction d'affectation. Aujourd'hui, seules les lvalue modifiables peuvent légalement constituer le membre gauche d'une instruction d'affectation. Par exemple, si a et b sont des identificateurs entier variables correctement créés, ils peuvent tous les deux être des lvalue modifiables et les affectations telles que a=1 ; et b=a+b ; sont correctes.

rvalue

L'expression a + b n'est pas une lvalue : a + b = a est illégale car le membre gauche de cette expression n'est pas associable à un objet. Ces expressions sont fréquemment appelées rvalue (le r correspondant à l'initiale de "right").

Voir aussi