On Mon, 22 Nov 2004 16:32:32 +0100, Arnaud Meurgues wrote:
Andre Heinen wrote:
Si une fonction modifie son argument, certains programmeurs trouvent qu'il vaut mieux utiliser un pointeur parce que ça rend plus explicite le fait que la fonction peut modifier l'argument. Par exemple f(&i). D'autres programmeurs utilisent des références mais choisissent un nom de fonction explicite, par exemple modifier(i).
On utilise plutôt "const" pour signifier qu'on ne va pas modifier le paramètre :
f(const <type> &i)
En fait, je ne voulais pas parler des déclarations ou définitions, mais des appels. "const" n'apparaît pas dans l'appel de fonction.
-- Andre Heinen My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
On Mon, 22 Nov 2004 16:32:32 +0100, Arnaud Meurgues
<arnaud@meurgues.non.fr.invalid> wrote:
Andre Heinen wrote:
Si une fonction modifie son argument, certains programmeurs
trouvent qu'il vaut mieux utiliser un pointeur parce que ça rend
plus explicite le fait que la fonction peut modifier l'argument.
Par exemple f(&i).
D'autres programmeurs utilisent des références mais choisissent
un nom de fonction explicite, par exemple modifier(i).
On utilise plutôt "const" pour signifier qu'on ne va pas modifier le
paramètre :
f(const <type> &i)
En fait, je ne voulais pas parler des déclarations ou
définitions, mais des appels. "const" n'apparaît pas dans
l'appel de fonction.
--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
On Mon, 22 Nov 2004 16:32:32 +0100, Arnaud Meurgues wrote:
Andre Heinen wrote:
Si une fonction modifie son argument, certains programmeurs trouvent qu'il vaut mieux utiliser un pointeur parce que ça rend plus explicite le fait que la fonction peut modifier l'argument. Par exemple f(&i). D'autres programmeurs utilisent des références mais choisissent un nom de fonction explicite, par exemple modifier(i).
On utilise plutôt "const" pour signifier qu'on ne va pas modifier le paramètre :
f(const <type> &i)
En fait, je ne voulais pas parler des déclarations ou définitions, mais des appels. "const" n'apparaît pas dans l'appel de fonction.
-- Andre Heinen My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
kanze
Pierre Maurette wrote in message news:...
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas être résolus de façon traditionnelle par un pointeur (mais ça doit bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple).
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Pierre Maurette <maurettepierre@wanadoo.fr> wrote in message
news:<ldi3q05qbc2dtpfefeu0qh4dtphvnfb4fd@4ax.com>...
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas
être résolus de façon traditionnelle par un pointeur (mais ça doit
bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour
(de l'opérateur[], par exemple).
--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas être résolus de façon traditionnelle par un pointeur (mais ça doit bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple).
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Andre Heinen
On 22 Nov 2004 18:55:36 +0100, Gabriel Dos Reis wrote:
Andre Heinen writes:
| Il est garanti qu'une référence "pointe" toujours sur quelque | chose.
int& f() { int i = 0; return i; } int main() { int& r = f(); return r; }
Oups, effectivement. Reprenons:
1) il est plus facile de se retrouver avec un pointeur invalide qu'avec une référence invalide;
2) si on a besoin de la valeur nulle les références ne conviennent pas.
-- Andre Heinen My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
On 22 Nov 2004 18:55:36 +0100, Gabriel Dos Reis
<gdr@integrable-solutions.net> wrote:
Andre Heinen <nospam@nospam.invalid> writes:
| Il est garanti qu'une référence "pointe" toujours sur quelque
| chose.
int& f() { int i = 0; return i; }
int main() { int& r = f(); return r; }
Oups, effectivement. Reprenons:
1) il est plus facile de se retrouver avec un pointeur invalide
qu'avec une référence invalide;
2) si on a besoin de la valeur nulle les références ne
conviennent pas.
--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
Je sais ce qu'est un pointeur , mais c'est le pourquoi on a ajouté le passage par référence au c++ alors qu'il existé deja la passage par adresse.
Pourquoi pas ? On peut tout faire avec une boucle do {} while(); et pourtant on a ajouté un repeat et un for. ^^^^^^
Ah bon ? ;)
Désolé, je navigue entre trop de langages: en algo, on présente repeat [until], while et for.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Marc Boyer
In article , Fabien LE LEZ wrote:
On 22 Nov 2004 11:19:35 GMT, Marc Boyer :
On peut tout faire avec une boucle do {} while();
C'est marrant, tu cites là la structure de boucle la moins utilisée, de très loin.
Vague souvenir d'info théo où on part d'un langage avec un boucle et la condition, et ou on fait tout le reste avec. Dans mon souvenir, on partait d'un repeat/until, mais je suis plus tout à fait sur.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <pc05q0p2vf2ndic1u7uib064tdfqgh5rtq@4ax.com>, Fabien LE LEZ wrote:
On 22 Nov 2004 11:19:35 GMT, Marc Boyer
<Marc.Boyer@enseeiht.yahoo.fr.invalid>:
On peut tout faire avec une boucle do {} while();
C'est marrant, tu cites là la structure de boucle la moins utilisée,
de très loin.
Vague souvenir d'info théo où on part d'un langage avec un boucle
et la condition, et ou on fait tout le reste avec.
Dans mon souvenir, on partait d'un repeat/until, mais je
suis plus tout à fait sur.
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
C'est marrant, tu cites là la structure de boucle la moins utilisée, de très loin.
Vague souvenir d'info théo où on part d'un langage avec un boucle et la condition, et ou on fait tout le reste avec. Dans mon souvenir, on partait d'un repeat/until, mais je suis plus tout à fait sur.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Pierre Maurette
Marc Boyer a écrit:
In article <41a261df$0$8197$, Loïc Joly wrote:
Marc Boyer wrote:
news.free.fr wrote:
Je sais ce qu'est un pointeur , mais c'est le pourquoi on a ajouté le passage par référence au c++ alors qu'il existé deja la passage par adresse.
Pourquoi pas ? On peut tout faire avec une boucle do {} while(); et pourtant on a ajouté un repeat et un for. ^^^^^^
Ah bon ? ;)
Désolé, je navigue entre trop de langages: en algo, on présente repeat [until], while et for. #define repeat do
#define until(x) while(!(x)) ;-) -- Pierre
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit:
In article <41a261df$0$8197$8fcfb975@news.wanadoo.fr>, Loïc Joly wrote:
Marc Boyer wrote:
news.free.fr wrote:
Je sais ce qu'est un pointeur , mais c'est le pourquoi on a ajouté le
passage par référence au c++ alors qu'il existé deja la passage par adresse.
Pourquoi pas ?
On peut tout faire avec une boucle do {} while(); et pourtant on
a ajouté un repeat et un for.
^^^^^^
Ah bon ? ;)
Désolé, je navigue entre trop de langages: en algo, on présente
repeat [until], while et for.
#define repeat do
Je sais ce qu'est un pointeur , mais c'est le pourquoi on a ajouté le passage par référence au c++ alors qu'il existé deja la passage par adresse.
Pourquoi pas ? On peut tout faire avec une boucle do {} while(); et pourtant on a ajouté un repeat et un for. ^^^^^^
Ah bon ? ;)
Désolé, je navigue entre trop de langages: en algo, on présente repeat [until], while et for. #define repeat do
#define until(x) while(!(x)) ;-) -- Pierre
Pierre Maurette
a écrit:
Pierre Maurette wrote in message news:...
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas être résolus de façon traditionnelle par un pointeur (mais ça doit bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre. En
revanche << et >> seraient peut-être un meilleur exemple ?
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe). -- Pierre
kanze@gabi-soft.fr a écrit:
Pierre Maurette <maurettepierre@wanadoo.fr> wrote in message
news:<ldi3q05qbc2dtpfefeu0qh4dtphvnfb4fd@4ax.com>...
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas
être résolus de façon traditionnelle par un pointeur (mais ça doit
bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour
(de l'opérateur[], par exemple).
L'opérateur [], je ne vois pas trop une reference en paramètre. En
revanche << et >> seraient peut-être un meilleur exemple ?
Il me semble que le retour d'une reference est utile et a du sens même
dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le
passage d'une reference en paramètre d'une fonction globale.
(j'appelle fonction globale une fonction ne faisant pâs partie d'une
classe).
--
Pierre
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas être résolus de façon traditionnelle par un pointeur (mais ça doit bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre. En
revanche << et >> seraient peut-être un meilleur exemple ?
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe). -- Pierre
Marc Boyer
In article , Pierre Maurette wrote:
a écrit:
Pierre Maurette wrote in message news:...
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas être résolus de façon traditionnelle par un pointeur (mais ça doit bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour. Comment faire std::vector<int> v; ... v[0]= 1; sans référence ?
Et tout simplement: cout<<"i= "<<i;
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe).
Ben, un retour devient parfois lui même un paramètre ;-)
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <5t06q09qlno8f0f1t0isstlsqtug6m93dr@4ax.com>, Pierre Maurette wrote:
kanze@gabi-soft.fr a écrit:
Pierre Maurette <maurettepierre@wanadoo.fr> wrote in message
news:<ldi3q05qbc2dtpfefeu0qh4dtphvnfb4fd@4ax.com>...
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas
être résolus de façon traditionnelle par un pointeur (mais ça doit
bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour
(de l'opérateur[], par exemple).
L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour.
Comment faire
std::vector<int> v;
...
v[0]= 1;
sans référence ?
Et tout simplement:
cout<<"i= "<<i;
Il me semble que le retour d'une reference est utile et a du sens même
dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le
passage d'une reference en paramètre d'une fonction globale.
(j'appelle fonction globale une fonction ne faisant pâs partie d'une
classe).
Ben, un retour devient parfois lui même un paramètre ;-)
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Je ne vois pas d'exemple de passage par reference qui ne pourrait pas être résolus de façon traditionnelle par un pointeur (mais ça doit bien exister).
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour. Comment faire std::vector<int> v; ... v[0]= 1; sans référence ?
Et tout simplement: cout<<"i= "<<i;
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe).
Ben, un retour devient parfois lui même un paramètre ;-)
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Pierre Maurette
Marc Boyer a écrit: [...]
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour. Comment faire std::vector<int> v; ... v[0]= 1; sans référence ? OK, ça c'est clair depuis plusieurs messages.
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe).
Ben, un retour devient parfois lui même un paramètre ;-) Quand on reçoit une reference en retour, on peut passer directement sa
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit:
[...]
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour
(de l'opérateur[], par exemple).
L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour.
Comment faire
std::vector<int> v;
...
v[0]= 1;
sans référence ?
OK, ça c'est clair depuis plusieurs messages.
Il me semble que le retour d'une reference est utile et a du sens même
dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le
passage d'une reference en paramètre d'une fonction globale.
(j'appelle fonction globale une fonction ne faisant pâs partie d'une
classe).
Ben, un retour devient parfois lui même un paramètre ;-)
Quand on reçoit une reference en retour, on peut passer directement sa
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour. Comment faire std::vector<int> v; ... v[0]= 1; sans référence ? OK, ça c'est clair depuis plusieurs messages.
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe).
Ben, un retour devient parfois lui même un paramètre ;-) Quand on reçoit une reference en retour, on peut passer directement sa
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour. Comment faire std::vector<int> v; ... v[0]= 1; sans référence ? OK, ça c'est clair depuis plusieurs messages.
OK, dès lors, on a introduit un nouveau (constructeur de) type dans le système de types. Alors, pourquoi l'interdire comme paramètre ? Comment batir un système de type cohérent en rajoutant cette contrainte ?
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe).
Ben, un retour devient parfois lui même un paramètre ;-) Quand on reçoit une reference en retour, on peut passer directement sa
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <2636q05fgjpcf80iuhhjdoq0bj28suec9b@4ax.com>, Pierre Maurette wrote:
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit:
[...]
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour
(de l'opérateur[], par exemple).
L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour.
Comment faire
std::vector<int> v;
...
v[0]= 1;
sans référence ?
OK, ça c'est clair depuis plusieurs messages.
OK, dès lors, on a introduit un nouveau (constructeur de) type
dans le système de types.
Alors, pourquoi l'interdire comme paramètre ? Comment batir
un système de type cohérent en rajoutant cette contrainte ?
Il me semble que le retour d'une reference est utile et a du sens même
dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le
passage d'une reference en paramètre d'une fonction globale.
(j'appelle fonction globale une fonction ne faisant pâs partie d'une
classe).
Ben, un retour devient parfois lui même un paramètre ;-)
Quand on reçoit une reference en retour, on peut passer directement sa
Les opérateurs surchargés. Et comme paramètre, et comme valeur de rétour (de l'opérateur[], par exemple). L'opérateur [], je ne vois pas trop une reference en paramètre.
Non, mais en valeur de retour. Comment faire std::vector<int> v; ... v[0]= 1; sans référence ? OK, ça c'est clair depuis plusieurs messages.
OK, dès lors, on a introduit un nouveau (constructeur de) type dans le système de types. Alors, pourquoi l'interdire comme paramètre ? Comment batir un système de type cohérent en rajoutant cette contrainte ?
Il me semble que le retour d'une reference est utile et a du sens même dans le cas d'une fonction globale. Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale. (j'appelle fonction globale une fonction ne faisant pâs partie d'une classe).
Ben, un retour devient parfois lui même un paramètre ;-) Quand on reçoit une reference en retour, on peut passer directement sa