Non. Que font l'assignement et le constructeur de copie (pourquoi pas mal de gens mettent toujours un re- devant?) de B?
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Bruno CAUSSE <envoi@lesSpam.fr> writes:
Est ce correcte?
Non. Que font l'assignement et le constructeur de copie (pourquoi pas
mal de gens mettent toujours un re- devant?) de B?
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Non. Que font l'assignement et le constructeur de copie (pourquoi pas mal de gens mettent toujours un re- devant?) de B?
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Bruno CAUSSE
dans l'article , Jean-Marc Bourguet à a écrit le 12/08/05 11:26 :
Bruno CAUSSE writes:
Est ce correcte?
Non. Que font l'assignement et le constructeur de copie (pourquoi pas mal de gens mettent toujours un re- devant?) de B?
Oui, oui... Disons
B(const B& src) {
//cas particulier que des membres primitifs (int) *premier = *(src.premier); *deuxieme = *(src.deuxieme); };
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Bruno CAUSSE <envoi@lesSpam.fr> writes:
dans l'article pxbek8zo69d.fsf@news.bourguet.org, Jean-Marc Bourguet à
jm@bourguet.org a écrit le 12/08/05 11:26 :
Bruno CAUSSE <envoi@lesSpam.fr> writes:
Est ce correcte?
Non. Que font l'assignement et le constructeur de copie (pourquoi pas
mal de gens mettent toujours un re- devant?) de B?
Oui, oui... Disons
B(const B& src) {
//cas particulier que des membres primitifs (int)
*premier = *(src.premier);
*deuxieme = *(src.deuxieme);
};
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Bruno CAUSSE
dans l'article , Jean-Marc Bourguet à a écrit le 12/08/05 11:47 :
Es-tu sur? As-tu essaye? Qu'est-ce qui se passe?
Malheureusement, je ne fais que de la "théorie" la journée, ma machine avec les outils de dev n'est accessible que le soir :-)
dans l'article pxb8xz7o5al.fsf@news.bourguet.org, Jean-Marc Bourguet à
jm@bourguet.org a écrit le 12/08/05 11:47 :
Es-tu sur? As-tu essaye? Qu'est-ce qui se passe?
Malheureusement, je ne fais que de la "théorie" la journée, ma machine avec
les outils de dev n'est accessible que le soir :-)
dans l'article , Jean-Marc Bourguet à a écrit le 12/08/05 11:47 :
Es-tu sur? As-tu essaye? Qu'est-ce qui se passe?
Malheureusement, je ne fais que de la "théorie" la journée, ma machine avec les outils de dev n'est accessible que le soir :-)
Fabien LE LEZ
On Fri, 12 Aug 2005 11:15:50 +0200, Bruno CAUSSE :
En passant, si cette adresse n'est pas correcte, merci de rajouter ".invalid" à la fin.
/* pointeur pour pouvoir intervertir premier et deuxieme rapidement c.a.d. Sans recopie d'objet; */
A* premier; A* deuxieme;
C'est un peu une bombe nucléaire pour tuer une mouche. Tu fais là de l'optimisation précoce : tu compliques le code dans l'espoir que ton programme aille plus vite, mais sans savoir à l'avance s'il y a réellement un problème de vitesse. Si ça se trouve, tes bidouillages ralentiront le programme.
Donc, ton code me paraît incorrect pour deux raisons :
- comme il y a des pointeurs et de l'allocation dynamique, tu dois rajouter un construteur de copie et un opérateur de copie -- en l'état, ça plantera à la première copie.
- ton code est inutilement compliqué, et je considère ça comme une erreur de programmation.
Peut on fixer ("const") la taille d'un vecteur. Aucun retrait ou ajout?
J'ai du mal à comprendre ta terminologie. Parles-tu ici d'un tableau (std::vector<>), ou d'un vecteur, i.e. objet mathématique, élément d'un espace vectoriel, représenté généralement par un tableau de taille fixe ?
Si tu veux un tableau de taille fixe connue à la compilation, un tableau "à la C" convient : static size_t const taille_tableau= 42; int tableau [taille_tableau];
Si tu veux un tableau de taille fixée dans le constructeur, ce n'est pas très difficile à programmer :
Note : il manque quelques trucs, comme les reverse_iterator, mais tu peux les rajouter au fur et à mesure de tes besoins.
On Fri, 12 Aug 2005 11:15:50 +0200, Bruno CAUSSE <envoi@lesSpam.fr>:
En passant, si cette adresse n'est pas correcte, merci de rajouter
".invalid" à la fin.
/* pointeur pour pouvoir intervertir premier et deuxieme rapidement c.a.d.
Sans recopie d'objet; */
A* premier;
A* deuxieme;
C'est un peu une bombe nucléaire pour tuer une mouche.
Tu fais là de l'optimisation précoce : tu compliques le code dans
l'espoir que ton programme aille plus vite, mais sans savoir à
l'avance s'il y a réellement un problème de vitesse.
Si ça se trouve, tes bidouillages ralentiront le programme.
Donc, ton code me paraît incorrect pour deux raisons :
- comme il y a des pointeurs et de l'allocation dynamique, tu dois
rajouter un construteur de copie et un opérateur de copie -- en
l'état, ça plantera à la première copie.
- ton code est inutilement compliqué, et je considère ça comme une
erreur de programmation.
Peut on fixer ("const") la taille d'un vecteur. Aucun retrait ou ajout?
J'ai du mal à comprendre ta terminologie. Parles-tu ici d'un tableau
(std::vector<>), ou d'un vecteur, i.e. objet mathématique, élément
d'un espace vectoriel, représenté généralement par un tableau de
taille fixe ?
Si tu veux un tableau de taille fixe connue à la compilation, un
tableau "à la C" convient :
static size_t const taille_tableau= 42;
int tableau [taille_tableau];
Si tu veux un tableau de taille fixée dans le constructeur, ce n'est
pas très difficile à programmer :
On Fri, 12 Aug 2005 11:15:50 +0200, Bruno CAUSSE :
En passant, si cette adresse n'est pas correcte, merci de rajouter ".invalid" à la fin.
/* pointeur pour pouvoir intervertir premier et deuxieme rapidement c.a.d. Sans recopie d'objet; */
A* premier; A* deuxieme;
C'est un peu une bombe nucléaire pour tuer une mouche. Tu fais là de l'optimisation précoce : tu compliques le code dans l'espoir que ton programme aille plus vite, mais sans savoir à l'avance s'il y a réellement un problème de vitesse. Si ça se trouve, tes bidouillages ralentiront le programme.
Donc, ton code me paraît incorrect pour deux raisons :
- comme il y a des pointeurs et de l'allocation dynamique, tu dois rajouter un construteur de copie et un opérateur de copie -- en l'état, ça plantera à la première copie.
- ton code est inutilement compliqué, et je considère ça comme une erreur de programmation.
Peut on fixer ("const") la taille d'un vecteur. Aucun retrait ou ajout?
J'ai du mal à comprendre ta terminologie. Parles-tu ici d'un tableau (std::vector<>), ou d'un vecteur, i.e. objet mathématique, élément d'un espace vectoriel, représenté généralement par un tableau de taille fixe ?
Si tu veux un tableau de taille fixe connue à la compilation, un tableau "à la C" convient : static size_t const taille_tableau= 42; int tableau [taille_tableau];
Si tu veux un tableau de taille fixée dans le constructeur, ce n'est pas très difficile à programmer :
Note : il manque quelques trucs, comme les reverse_iterator, mais tu peux les rajouter au fur et à mesure de tes besoins.
Jean-Marc Bourguet
Bruno CAUSSE writes:
dans l'article , Jean-Marc Bourguet à a écrit le 12/08/05 11:47 :
Es-tu sur? As-tu essaye? Qu'est-ce qui se passe?
Malheureusement, je ne fais que de la "théorie" la journée, ma machine avec les outils de dev n'est accessible que le soir :-)
1/ quel est la difference entre *this != src et this != &src
2/ Pourquoi est-ce que le test *this != src est necessaire? (En premiere approximation, si un tel test est necessaire, il y a grande chance que le code soit incorrect en presence d'exceptions)
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Bruno CAUSSE <envoi@lesSpam.fr> writes:
dans l'article pxb8xz7o5al.fsf@news.bourguet.org, Jean-Marc Bourguet à
jm@bourguet.org a écrit le 12/08/05 11:47 :
Es-tu sur? As-tu essaye? Qu'est-ce qui se passe?
Malheureusement, je ne fais que de la "théorie" la journée, ma machine avec
les outils de dev n'est accessible que le soir :-)
1/ quel est la difference entre
*this != src
et
this != &src
2/ Pourquoi est-ce que le test
*this != src
est necessaire? (En premiere approximation, si un tel test est
necessaire, il y a grande chance que le code soit incorrect en
presence d'exceptions)
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
dans l'article , Jean-Marc Bourguet à a écrit le 12/08/05 11:47 :
Es-tu sur? As-tu essaye? Qu'est-ce qui se passe?
Malheureusement, je ne fais que de la "théorie" la journée, ma machine avec les outils de dev n'est accessible que le soir :-)
1/ quel est la difference entre *this != src et this != &src
2/ Pourquoi est-ce que le test *this != src est necessaire? (En premiere approximation, si un tel test est necessaire, il y a grande chance que le code soit incorrect en presence d'exceptions)
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On Fri, 12 Aug 2005 11:42:54 +0200, Bruno CAUSSE :
Je te conseille de lire Exceptional C++ (Herb Sutter), dont une partie importante est consacrée à cette construction et tout ce qui va autour.
Fabien LE LEZ
On 12 Aug 2005 11:53:46 +0200, Jean-Marc Bourguet :
2/ Pourquoi est-ce que le test *this != src est necessaire? (En premiere approximation, si un tel test est necessaire, il y a grande chance que le code soit incorrect en presence d'exceptions)
Et en deuxième approximation, étant donné un code contenant ce test, il y a toujours un moyen plus élégant, ne contenant pas le test en question...
On 12 Aug 2005 11:53:46 +0200, Jean-Marc Bourguet <jm@bourguet.org>:
2/ Pourquoi est-ce que le test
*this != src
est necessaire? (En premiere approximation, si un tel test est
necessaire, il y a grande chance que le code soit incorrect en
presence d'exceptions)
Et en deuxième approximation, étant donné un code contenant ce test,
il y a toujours un moyen plus élégant, ne contenant pas le test en
question...
On 12 Aug 2005 11:53:46 +0200, Jean-Marc Bourguet :
2/ Pourquoi est-ce que le test *this != src est necessaire? (En premiere approximation, si un tel test est necessaire, il y a grande chance que le code soit incorrect en presence d'exceptions)
Et en deuxième approximation, étant donné un code contenant ce test, il y a toujours un moyen plus élégant, ne contenant pas le test en question...