Bonjour à tous
Quelqu'un pourrait m'expliquer s'il vous plait l'avantage que présente les réferences par apport aux pointeurs en C++
 
			
			






 
			
			
			
			 
			
				
 réferences et pointeurs
 réferences et pointeurs
				
				
						
						
				Bonjour à tous
Quelqu'un pourrait m'expliquer s'il vous plait l'avantage que présente les réferences par apport aux pointeurs en C++
 
 
				
				
						
						
				Les principaux avantages sont :
Syntaxe plus simple ( ++a au lieu de ++*a ou a[2] au lieu de (*a)[2] par exemple)
On ne peut pas "déplacer" une référence par mégarde (ie la faire pointer sur autre chose) et donc moins de risques de modifier n'importe quoi...
Sémantiquement, c'est plus logique, on veut modifier une variable, on passe la vrai variable elle même, plutôt qu'une adresse de variable.
Les pointeurs, c'est plutôt les méthodes C, le C++ utilise les références qui permettent de faire à peu près tout ce que les pointeurs permettent de faire (allocation dynamique, polymorphisme, etc...)
La seule différence véritable, est au niveau des tableaux (mais pour ça, les conteneurs de la STL existent en C++) et de la "nullabilité" des pointeurs qui ne se retrouve pas chez les références (un pointeur peut ne pointer sur RIEN (être NULL), pas une référence)
Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Merci beaucoup pour la réponse.
Je me demande est ce qu'on peut affecter un pointeur à une réference et vice verça? du moment qu'ils sont de même nature
 
 
				
				
						
						
				du moment que le type de base est le même, l'affectation ne pose pas de problème :où C est une classe ou un type quelconque...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
ici inst_C est une instance normale de la classe ou du type C.
mais comme une référence s'utilise de la même manière qu'une instance classique, il n'y a pas de problème
pour l'autre sens, c'est plus délicat, dans la mesure où l'on spécifie l'objet pointé par une référence une fois pour toute à sa création :en tous cas, une référence se manipule comme une instance normale de la classe. donc pas de problème vis-à-vis des pointeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)
 
 
				
				
						
						
				Bonjour,
cette question est posée toutes les semaines. aussi une simple recherche sur le forum apporte une foultitude de réponses pertinentes
http://www.developpez.net/forums/search.php
merci
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Okii, la prochaine fois je le ferai promis
Mais avant j'ai un autre problème avec ces réferencesJe n'arrive pas à comprendre pourquoi (dans l'exemple qui suit) on a eu recours à un autre constructeur qui admet comme argument une reference à la classe Liste, un seul constructeur ne suffirait-il pas ?? et pourquoi dans ce cas le passage par réference est devenu obligatoire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
 
				
				
						
						
				Les références sont expliquées ici:
http://c.developpez.com/faq/cpp/?pag...CE_utilisation
Je trouve un peu léger mais bon.
Outre ce qui a été cité, les références sont surtout utiles pour éviter la programmation défensive:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Partager