11
votes

Quelle est la différence entre l'opérateur de points et l'opérateur de résolution de la portée

Je voulais juste connaître la différence entre. opérateur et :: opérateur?


0 commentaires

3 Réponses :


23
votes

L'ancien (dot, . ) est utilisé pour accéder aux membres d'un objet, ce dernier (double côlon, :: ) est utilisé pour accéder aux membres d'un espace de noms ou une classe.

Considérez la configuration suivante. xxx

Dans ce cas, faire référence à la structure, membre d'un espace de noms, vous utilisez :: . Pour accéder à la variable dans un objet de type type , vous utilisez . . xxx


2 commentaires

Donc, si nous utilisons un objet pour accéder à quelque chose, nous devons utiliser l'opérateur DOT, et si nous utilisons un nom de classe, nous devons utiliser ::, à droite?, pouvez-vous donner un exemple aussi, si vous ne vous dérange pas!


@ODX, c'est correct, donc si vous avez une variable statique ou une fonction d'une classe, vous utiliseriez "::" avec le nom de la classe pour les référencer, alors que si vous avez une fonction membre ou une variable membre, vous le feriez utilisation "." avec le nom d'une instance de la classe.



1
votes

Si vous utilisez un pointeur sur une instance d'objet, vous devrez accéder aux membres de l'objet en utilisant -> à la place de "point"


1 commentaires

Vous n'avez pas - p-> m est juste du sucre syntaxique pour (* p) .m ;)



3
votes

Une autre façon de penser au quad-dot '::' est l'opérateur de résolution de la portée. Dans les cas où il y a plus d'un objet dans le même nom qui ont le même nom. Vous déclarez explicitement lequel utiliser: xxx

ou xxx

l'opérateur de point "." est d'appeler des méthodes et des attributs d'une instance d'objet xxx

il n'a pas été demandé, mais il y a un autre opérateur à utiliser si une instance d'objet est créé de manière dynamique avec neuf , il s'agit de l'opérateur de flèche '->' xxx


0 commentaires