9 votes

c++ pointeur vers une référence

Est-il légal d'avoir un pointeur d'une référence en C++ ?

Par exemple :

int &ref = array[idx];
func(&ref);

Une raison pour laquelle je pense que vous pourriez vouloir faire cela si func() existe déjà dans une bibliothèque que vous ne pouvez pas modifier.

12voto

Jon Points 194296

Ce n'est pas le cas. L'adresse d'une référence peut être prise, mais "pointeur vers une référence de T" n'est pas un type valide. Ce que vous faites ici est de prendre un pointeur vers l'objet lui-même, puisque Une référence à un objet crée simplement un autre nom par lequel vous pouvez accéder à ce même objet. .

9voto

Ben Voigt Points 151460

Ce code est légal, mais il ne crée pas de pointeur vers la référence. Il crée un pointeur vers le référent (la cible de la référence).

0voto

Mahesh Points 20994

Le pointeur pointe vers un objet et la référence n'est pas un objet pour avoir un pointeur vers lui. La référence est juste un alias .

Ce post sur SO contient des informations - Pourquoi les pointeurs vers une référence sont illégaux ?

-1voto

outis Points 39377

Si par "avoir un pointeur d'une référence" vous voulez dire prendre l'adresse d'une référence (comme dans votre exemple : &ref ), alors c'est parfaitement légal. Toute variable est un identifiant, donc & peut être appliquée par le § 5.3.1-2 de C++-03. Les expressions avec des types de référence sont des lvalues, et donc & est applicable par la même section.

Si par "avoir un pointeur d'une référence" vous voulez dire un type qui est un pointeur vers une référence (par exemple int &* ), alors non, selon le § 8.3.2-4 (et la note du § 8.3.1-4).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X