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 ? Relire. Il n'est absolument pas question de contrainte à ce niveau-là,
mais de trouver un exemple répondant à: "y a til des choses que le passage par référence peut faire que le passage par adresse nepeut pas ? "
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
&(&(&(cout<<"i= ")<<i)<<" j= ")<<j; Relire également. Je parlais là de fonctions globales. Ceci dit, il
est clair que: int& ChoisirVariable(int* var1, int* var2, bool choix); n'est pas très heureux, au profit de: int& ChoisirVariable(const int& var1, const int& var2, bool choix); -- Pierre
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit:
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 ?
Relire. Il n'est absolument pas question de contrainte à ce niveau-là,
mais de trouver un exemple répondant à:
"y a til des choses que le passage par référence peut faire que le
passage par adresse nepeut pas ? "
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
&(&(&(cout<<"i= ")<<i)<<" j= ")<<j;
Relire également. Je parlais là de fonctions globales. Ceci dit, il
est clair que:
int& ChoisirVariable(int* var1, int* var2, bool choix);
n'est pas très heureux, au profit de:
int& ChoisirVariable(const int& var1, const int& var2, bool choix);
--
Pierre
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 ? Relire. Il n'est absolument pas question de contrainte à ce niveau-là,
mais de trouver un exemple répondant à: "y a til des choses que le passage par référence peut faire que le passage par adresse nepeut pas ? "
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
&(&(&(cout<<"i= ")<<i)<<" j= ")<<j; Relire également. Je parlais là de fonctions globales. Ceci dit, il
est clair que: int& ChoisirVariable(int* var1, int* var2, bool choix); n'est pas très heureux, au profit de: int& ChoisirVariable(const int& var1, const int& var2, bool choix); -- Pierre
Marc Boyer
In article , Pierre Maurette wrote:
Marc Boyer a écrit: [SNIP]
Relire. Il n'est absolument pas question de contrainte à ce niveau-là, mais de trouver un exemple répondant à: "y a til des choses que le passage par référence peut faire que le passage par adresse nepeut pas ? "
Pardon, je pensais qu'on avait dépassé cette question là. Car non, je ne vois rien qu'on ne puisse pas faire avec un pointeur et qu'on puisse faire avec une référence (hormis des questions de syntaxe).
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
&(&(&(cout<<"i= ")<<i)<<" j= ")<<j; Relire également. Je parlais là de fonctions globales. Ceci dit, il
est clair que:
Ben, mon operateur << n'est pas une fonction membre.
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 <3c46q0ti2dhtt6tv6l4iullhirjf98udre@4ax.com>, Pierre Maurette wrote:
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit:
[SNIP]
Relire. Il n'est absolument pas question de contrainte à ce niveau-là,
mais de trouver un exemple répondant à:
"y a til des choses que le passage par référence peut faire que le
passage par adresse nepeut pas ? "
Pardon, je pensais qu'on avait dépassé cette question là.
Car non, je ne vois rien qu'on ne puisse pas faire avec un
pointeur et qu'on puisse faire avec une référence (hormis
des questions de syntaxe).
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
Relire. Il n'est absolument pas question de contrainte à ce niveau-là, mais de trouver un exemple répondant à: "y a til des choses que le passage par référence peut faire que le passage par adresse nepeut pas ? "
Pardon, je pensais qu'on avait dépassé cette question là. Car non, je ne vois rien qu'on ne puisse pas faire avec un pointeur et qu'on puisse faire avec une référence (hormis des questions de syntaxe).
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
On Tue, 23 Nov 2004 10:43:55 +0100, Pierre Maurette wrote:
Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale.
Pourquoi? Les avantages ne sont-ils pas les mêmes que dans le cas d'une fonction membre?
-- Andre Heinen My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
Pierre Maurette
Andre Heinen a écrit:
On Tue, 23 Nov 2004 10:43:55 +0100, Pierre Maurette wrote:
Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale.
Pourquoi? Les avantages ne sont-ils pas les mêmes que dans le cas d'une fonction membre? Vous avez sans doute raison. Je suis sans doute influencé par le C, et
la crainte d'erreurs, alors que l'utilisation de reference n'est jamais obligatoire, et celle de pointeurs supposée maîtrisée. Mais je ne sais pas s'il est de bonne règle de style de modifier un paramètre formel. -- Pierre
Andre Heinen <nospam@nospam.invalid> a écrit:
On Tue, 23 Nov 2004 10:43:55 +0100, Pierre Maurette
<maurettepierre@wanadoo.fr> wrote:
Ce qui me semble inutile, c'est le
passage d'une reference en paramètre d'une fonction globale.
Pourquoi? Les avantages ne sont-ils pas les mêmes que dans le
cas d'une fonction membre?
Vous avez sans doute raison. Je suis sans doute influencé par le C, et
la crainte d'erreurs, alors que l'utilisation de reference n'est
jamais obligatoire, et celle de pointeurs supposée maîtrisée.
Mais je ne sais pas s'il est de bonne règle de style de modifier un
paramètre formel.
--
Pierre
On Tue, 23 Nov 2004 10:43:55 +0100, Pierre Maurette wrote:
Ce qui me semble inutile, c'est le passage d'une reference en paramètre d'une fonction globale.
Pourquoi? Les avantages ne sont-ils pas les mêmes que dans le cas d'une fonction membre? Vous avez sans doute raison. Je suis sans doute influencé par le C, et
la crainte d'erreurs, alors que l'utilisation de reference n'est jamais obligatoire, et celle de pointeurs supposée maîtrisée. Mais je ne sais pas s'il est de bonne règle de style de modifier un paramètre formel. -- Pierre
Andre Heinen
J'en avais oublié une qui est peut-être la plus importante: les références sont indispensables pour les constructeurs par copie.
-- Andre Heinen My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
J'en avais oublié une qui est peut-être la plus importante: les
références sont indispensables pour les constructeurs par copie.
--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
On Tue, 23 Nov 2004 13:46:48 +0100, Pierre Maurette wrote:
alors que l'utilisation de reference n'est jamais obligatoire,
Sauf, comme je viens de m'en souvenir en vous lisant, dans le cas des constructeurs par copie. ;-)
Mais je ne sais pas s'il est de bonne règle de style de modifier un paramètre formel.
Je ne sais pas non plus. AMHA les deux points de vue se défendent, aussi bien en ce qui concerne les fonctions membres que les fonctions non membres.
-- Andre Heinen My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz
Gabriel Dos Reis
Pierre Maurette writes:
| 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 ?
Porbablement. James a raison : les références ont été introduite en C++ afin d'efficacement supporter la surcharge d'opérateur. Voir son exemple de « + » sur les matrices.
| 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.
Pour quelles raisons ? Quelle est la différence entre foo() et operator+() ?
-- Gaby
Pierre Maurette <maurettepierre@wanadoo.fr> writes:
| 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 ?
Porbablement. James a raison : les références ont été introduite en
C++ afin d'efficacement supporter la surcharge d'opérateur. Voir son
exemple de « + » sur les matrices.
| 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.
Pour quelles raisons ? Quelle est la différence entre foo() et
operator+() ?
| 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 ?
Porbablement. James a raison : les références ont été introduite en C++ afin d'efficacement supporter la surcharge d'opérateur. Voir son exemple de « + » sur les matrices.
| 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.
Pour quelles raisons ? Quelle est la différence entre foo() et operator+() ?
-- Gaby
Loïc Joly
Gabriel Dos Reis wrote:
[...]
James a raison [...]
Ce jour est à marquer d'une croix dans le calendrier ;)
-- Loïc
Gabriel Dos Reis wrote:
[...]
James a raison
[...]
Ce jour est à marquer d'une croix dans le calendrier ;)