Quel est le sens de & in c ++?

Je veux connaître la signification de & dans l’exemple ci-dessous:

class1 &class1::instance(){ ///something to do } 

Cela signifie que votre méthode retourne une référence à un object method1. Une référence est comme un pointeur en ce sens qu’elle fait référence à l’object plutôt que d’être une copie de celui-ci, mais la différence avec un pointeur est que les références:

  • ne peut jamais être indéfini / NULL
  • vous ne pouvez pas faire de l’arithmétique de pointeur avec eux

Donc, ils sont une sorte de version légère, plus sûre des pointeurs.

L’opérateur & a trois significations en C ++.

  • “ET au niveau des bits”, par exemple 2 & 1 == 3
  • “Adresse de”, par exemple: int x = 3; int* ptr = &x; int x = 3; int* ptr = &x;
  • Modificateur de type de référence, par exemple int x = 3; int& ref = x; int x = 3; int& ref = x;

Ici vous avez un modificateur de type de référence. Votre fonction class1 &class1::instance() est une fonction membre de type class1 appelée instance , qui renvoie une référence -to- class1 . Vous pouvez voir cela plus clairement si vous écrivez class1& class1::instance() (ce qui équivaut à votre compilateur).

C’est une référence (ne pas utiliser l’arithmétique de pointeur pour l’obtenir) à un object.

Il renvoie une référence à un object du type sur lequel il a été défini.

Dans le contexte de la déclaration, il semblerait qu’il renvoie une référence à la classe dans laquelle il a été défini. Je soupçonne que dans la section “Do Stuff” est un

 return *this; 

Cela signifie que la variable n’est pas la variable elle-même, mais une référence à celle-ci. Par conséquent, en cas de changement de valeur, vous le verrez immédiatement si vous utilisez une instruction print pour le voir. Examinez les références et les pointeurs pour obtenir une réponse plus détaillée, mais cela signifie fondamentalement une référence à la variable ou à l’object …