8
votes

Est-ce techniquement correct de dire que les variables et les constantes sont des objets de types de données?

peut-on dire variables et constantes sont des objets de types de données ?

Je me demande quelle serait l'explication appropriée de ce xxx

Ici, pouvons-nous dire a est un objet de type int et f est un objet de type float ? < / p>

c c++

2 commentaires

En C ++ une variable est une référence ou un objet. Une référence n'est pas un objet.


Qu'entendez-vous par «constantes»? 42 , par exemple est une constante et est pas un objet. const et "constante", malgré la similitude de leurs noms, ne sont pas la même chose.


4 Réponses :


6
votes

A et f sont des objets de type int et tapez float , respectivement. Oui, cela contredit ce que @Patashu dit, et c'est parce que nous utilisons différentes définitions de "objet".

@patashu utilise la définition de la programmation orientée objet: un objet est une chose avec des méthodes, etc. et c'est parfaitement bien.

Cependant, C ++ est une langue multi-paradigme - elle prend en charge plusieurs modèles de programmation. La définition de langue C ++ utilise le mot "objet" dans le sens large que les écrivains compilateurs utilisent: un objet est une région de stockage avec diverses opérations pouvant être effectuées sur ce stockage. Les opérations sont définies par le type de l'objet. Il existe un ensemble d'opérations bien définies pouvant être appliquée à un objet de type int , donc lorsque vous savez que vous avez affaire à un int vous et le compilateur savez Quelles sont les choses que vous pouvez faire avec cela et, par implication, ce que vous ne pouvez pas faire avec cela.


0 commentaires

12
votes

Oui

par paragraphe §1.8, A et b sont des objets de leurs types correspondants.

1 Un objet est une région de stockage. [Remarque: une fonction n'est pas un objet, indépendamment de savoir si elle occupe un stockage de la manière dont objets font. -End Remarque] Un objet est créé par une définition (3.1), par une nouvelle expression (5.3.4) ou par la mise en œuvre (12.2) en cas de besoin. Les propriétés d'un objet sont déterminées lorsque l'objet est créé. Un objet peut avoir un nom (clause 3). Un objet a une durée de stockage (3.7) qui influence sa vie (3.8). Un objet a un type (3.9). Le terme Type d'objet fait référence au type avec lequel l'objet est créé .

[intro.Object]

et ces variables correspondent à la définition citée ci-dessus.


0 commentaires

1
votes

Je dirais oui. Un objet de données est simplement une région de stockage contenant une valeur ou un groupe de valeurs. int a et float f d'accord avec cette définition. Si nous voulons voir les différences entre celles et les objets "traditionnels" dans des langages orientés objet, nous devrions montrer le concept de type type de données , qui aide le compilateur allouer le stockage pour cet objet de données et interpréter sa valeurs de mémoire lorsqu'il est accessible.

Chaque objet de données en C ++ doit avoir un type de données (identificateurs d'objets de données et de types de données est établi dans la déclaration de variable / constante ). Dans la classification des types de données, c'est où nous voyons que int A; et objet A; ne sont pas "toutaux":

int et float sont types de données de base , en ce sens qu'ils sont fournis par la langue. L'objet type dans cet exemple serait un type dérivé car il est créé à partir de types de base.

Les types de données peuvent être classés dans d'autres groupes, souvent se chevauchant, des groupes: par exemple, on peut dire que objet est un type défini par l'utilisateur; et que int est un type scalaire , car il représente une seule valeur de données.


0 commentaires

0
votes

non

(ou plutôt "sans doute pas")

Ad "Variables et constantes sont des objets de types de données" :

Bien que vous puissiez trouver l'expression "objet de type" dans la norme C ++ (comme "objet de type T" [basic.def.odr] / 5) et la norme C (par exemple "objet de type wchar_t" 3.7. 3), on pourrait discuter de l'utilisation du terme "variable" dans votre exemple, au moins en C ++:

[BASIC] / 6

Une variable est introduite par la Déclaration d'une référence autre qu'un élément de données non statique ou d'un objet. Le nom de la variable indique la référence ou l'objet.

donc, réponse int = 42; int & deepthough = réponse; introduit:

  • Un objet de type int
  • une variable, nom Réponse , faisant référence à l'objet ci-dessus
  • une variable, nom deepthought , faisant référence au même objet

    Mais une référence afaik n'est pas un objet (ne doit pas être) - donc on pourrait dire que les variables ne sont pas nécessairement des objets. Bien sûr, ils ne sont pas identiques, par ex. Allocation de mémoire dynamique.


    ad "A est un objet de type de données int et f Un objet de type flotteur"

    afaik qui se conforme à la norme, bien que d'être plus précis, il faudrait inclure quelque chose comme "dénote", par exemple. " A désigne un objet de DataType int".

    Mais je pense qu'il n'y a pas d'ambiguïté, je le considère donc bien.


1 commentaires

N.b. Dans C, le terme "constante" a une signification différente comme en C ++. Les constantes en C sont des littéraux en C ++. Quel que soit le nom que vous le donnez, les constantes / littéraux non stricts sont des rapeaux, ce qui les disqualifie probablement comme des objets (vous ne pouvez pas prendre une adresse d'entre eux, vous ne pouvez pas leur attribuer, ergo, il n'est pas nécessaire qu'ils occupent réellement espace de rangement).