Comme on voit bien dans le programme en bas la cr=E9ation est appell=E9e
plusieurs fois.
Et voil=E0 la sortie du programme :
$ ./a.exe
Declaration m1
--- Constructor called ---
Declaration m1
--- Constructor called ---
Declaration mSum1
--- Constructor called ---
mSum1 =3D m1 + m2
--- Operator "+" called ---
--- Constructor called ---
--- Operator "=3D" called ---
--- Destructor called ---
Declaration mSum2 =3D m1 + m2
--- Operator "+" called ---
--- Constructor called ---
Declaration mSum3
--- Constructor called ---
--- Operator "+" called ---
--- Constructor called ---
--- Operator "=3D" called ---
--- Destructor called ---
Declaration m4 =3D mSum3
--- Copy constructor called ---
0
--- Destructor called ---
--- Destructor called ---
--- Destructor called ---
--- Destructor called ---
--- Destructor called ---
--- Destructor called ---
Ce que m'int=E9resse le plus c'est pourquoi j'ai ces lignes l=E0 :
Declaration mSum2 =3D m1 + m2
--- Operator "+" called ---
--- Constructor called ---
Je ne vois pas l'operator=3D ni de constructeur de copie. Si je mets le
vrai code pour la classe matrix, le mSum2 est en effet la somme des 2,
l'objet est cr=E9=E9 et vit bien =E7a vie...
Quelqu'un saurait-il m'expliquer la suite des appels ici ? J'imagine
que la ligne
--- Constructor called ---
correspond =E0 la cr=E9ation de l'objet temporaire dans l'operator +. Mais
o=F9 est la trace de l'operator =3D ?
Étre à un niveau suffisamment avancé pour écrire ses propres templates, et ne pas connaître la base (i.e. la notion de tableau), ça fait peur...
Et ben non, la notion de tableau est bien connue ! Il y a un pointeur T** dans mon exemple
J'ai une impression qu'on parle pas de la même chose. Rappelez-vous du bon vieux temps quand on faisait des exercices de toute sorte à l'école sans utiliser les librairies. Non ? Jamais ? Mais alors...
J'ai toujours trouve ca cretin comme facon de proceder. Apres, on se retrouve avec des eleves qui reimplementent des bouts de la bibliotheque standard de facon bugguee pour rien, ou qui ont du mal a ne pas tout refaire eux-memes `parce que, de toutes facons, la bibliotheque standard, elle est pourrie'. (vu d'experience avec certains elements de certaine ecole qui fait reimplementer un gros bout de la bibliotheque C en premiere annee). On peut se dire, on gagne du temps, on va leur faire reecrire un bout de la bibliotheque, comme ca ils la connaitront sur le bout des doigts, et ca fera autant de gagne en cours.
Ben en fait, non. Ca marche pas du tout du tout. A la place, ils implementent les trucs de travers, et apres ils se trimballent avec des idees fausses sur ce qu'ils ont fait jusqu'a ce que quelqu'un vienne les detromper.
In article <1186581491.460544.232660@q75g2000hsh.googlegroups.com>,
Alex Paris <rbbt.fr@gmail.com> wrote:
On 8 août, 15:47, Fabien LE LEZ <grams...@gramster.com> wrote:
Étre à un niveau suffisamment avancé pour écrire ses propres
templates, et ne pas connaître la base (i.e. la notion de tableau), ça
fait peur...
Et ben non, la notion de tableau est bien connue ! Il y a un pointeur
T** dans mon exemple
J'ai une impression qu'on parle pas de la même chose. Rappelez-vous du
bon vieux temps quand on faisait des exercices de toute sorte à
l'école sans utiliser les librairies. Non ? Jamais ? Mais alors...
J'ai toujours trouve ca cretin comme facon de proceder. Apres, on se
retrouve avec des eleves qui reimplementent des bouts de la bibliotheque
standard de facon bugguee pour rien, ou qui ont du mal a ne pas tout
refaire eux-memes `parce que, de toutes facons, la bibliotheque standard,
elle est pourrie'. (vu d'experience avec certains elements de certaine
ecole qui fait reimplementer un gros bout de la bibliotheque C en premiere
annee). On peut se dire, on gagne du temps, on va leur faire reecrire
un bout de la bibliotheque, comme ca ils la connaitront sur le bout des
doigts, et ca fera autant de gagne en cours.
Ben en fait, non. Ca marche pas du tout du tout. A la place, ils implementent
les trucs de travers, et apres ils se trimballent avec des idees fausses
sur ce qu'ils ont fait jusqu'a ce que quelqu'un vienne les detromper.
Étre à un niveau suffisamment avancé pour écrire ses propres templates, et ne pas connaître la base (i.e. la notion de tableau), ça fait peur...
Et ben non, la notion de tableau est bien connue ! Il y a un pointeur T** dans mon exemple
J'ai une impression qu'on parle pas de la même chose. Rappelez-vous du bon vieux temps quand on faisait des exercices de toute sorte à l'école sans utiliser les librairies. Non ? Jamais ? Mais alors...
J'ai toujours trouve ca cretin comme facon de proceder. Apres, on se retrouve avec des eleves qui reimplementent des bouts de la bibliotheque standard de facon bugguee pour rien, ou qui ont du mal a ne pas tout refaire eux-memes `parce que, de toutes facons, la bibliotheque standard, elle est pourrie'. (vu d'experience avec certains elements de certaine ecole qui fait reimplementer un gros bout de la bibliotheque C en premiere annee). On peut se dire, on gagne du temps, on va leur faire reecrire un bout de la bibliotheque, comme ca ils la connaitront sur le bout des doigts, et ca fera autant de gagne en cours.
Ben en fait, non. Ca marche pas du tout du tout. A la place, ils implementent les trucs de travers, et apres ils se trimballent avec des idees fausses sur ce qu'ils ont fait jusqu'a ce que quelqu'un vienne les detromper.
espie
In article , Fabien LE LEZ wrote:
Accessoirement, on peut se demander s'il est raisonnable d'enseigner le C++ à l'école. De toutes façons, même un prof compétent a trop peu d'heures de cours pour donner autre chose qu'une introduction.
Je ne sais meme pas si ca a du sens de faire un vrai gros cours de C++. Lorsqu'on en arrive aux vrais bouts sympa du langage, ca devient plus interessant de faire un cours sur certains aspects de methodologie: design patterns, refactoring, et gestion des exceptions.
Le seul autre cours que je vois, c'est un cours d'initiation, ou pour des raisons plus ou moins specieuses, on a decide que les gens avaient besoin de `connaitre' un langage de type C. Faire `un peu' de C++ permet de profiter des messages d'erreur du compilo, plus strict que celui du C. Et une utilisation raisonnee de la bibliotheque standard (string, vector, iostream) permet d'eviter totalement de parler d'allocation memoire et de pointeur, et de prendre une ou deux heures a expliquer printf.
Evidemment, ca fait pas des gens qui parlent C++, ca fait juste des gens qui arrivent a ecrire des petits programmes dans un langage C/C++-like sans y passer des dizaines d'heures et se prendre trois tonnes de segfault...
In article <madjb3t5ppo16qnul9ft6g03ks3mlbdj21@4ax.com>,
Fabien LE LEZ <usenet13@edulang.com> wrote:
Accessoirement, on peut se demander s'il est raisonnable d'enseigner
le C++ à l'école. De toutes façons, même un prof compétent a trop peu
d'heures de cours pour donner autre chose qu'une introduction.
Je ne sais meme pas si ca a du sens de faire un vrai gros cours de C++.
Lorsqu'on en arrive aux vrais bouts sympa du langage, ca devient plus
interessant de faire un cours sur certains aspects de methodologie:
design patterns, refactoring, et gestion des exceptions.
Le seul autre cours que je vois, c'est un cours d'initiation, ou pour
des raisons plus ou moins specieuses, on a decide que les gens avaient
besoin de `connaitre' un langage de type C. Faire `un peu' de C++ permet
de profiter des messages d'erreur du compilo, plus strict que celui du C.
Et une utilisation raisonnee de la bibliotheque standard (string, vector,
iostream) permet d'eviter totalement de parler d'allocation memoire et
de pointeur, et de prendre une ou deux heures a expliquer printf.
Evidemment, ca fait pas des gens qui parlent C++, ca fait juste des gens qui
arrivent a ecrire des petits programmes dans un langage C/C++-like sans y
passer des dizaines d'heures et se prendre trois tonnes de segfault...
Accessoirement, on peut se demander s'il est raisonnable d'enseigner le C++ à l'école. De toutes façons, même un prof compétent a trop peu d'heures de cours pour donner autre chose qu'une introduction.
Je ne sais meme pas si ca a du sens de faire un vrai gros cours de C++. Lorsqu'on en arrive aux vrais bouts sympa du langage, ca devient plus interessant de faire un cours sur certains aspects de methodologie: design patterns, refactoring, et gestion des exceptions.
Le seul autre cours que je vois, c'est un cours d'initiation, ou pour des raisons plus ou moins specieuses, on a decide que les gens avaient besoin de `connaitre' un langage de type C. Faire `un peu' de C++ permet de profiter des messages d'erreur du compilo, plus strict que celui du C. Et une utilisation raisonnee de la bibliotheque standard (string, vector, iostream) permet d'eviter totalement de parler d'allocation memoire et de pointeur, et de prendre une ou deux heures a expliquer printf.
Evidemment, ca fait pas des gens qui parlent C++, ca fait juste des gens qui arrivent a ecrire des petits programmes dans un langage C/C++-like sans y passer des dizaines d'heures et se prendre trois tonnes de segfault...
espie
In article <46b9c32b$0$21534$, Michael DOUBEZ wrote:
Mon propos etait qu'un simple vector est mieux qu'un vector de vector. Le redimensionnement d'une matrice représentée par un vector de vector impliquerait de redimensionner chaque ligne ce qui est assez laid de tous les points de vue. Bon, mon exemple de matrice avec des lignes de différentes tailles en case d'exception n'est ni explicite, ni pertinent, c'est vrai.
De toutes facons, si tu veux bosser avec des vraies matrices, faut plutot aller fouiller du cote de valarray que de vector...
In article <46b9c32b$0$21534$426a74cc@news.free.fr>,
Michael DOUBEZ <michael.doubez@free.fr> wrote:
Mon propos etait qu'un simple vector est mieux qu'un vector de vector.
Le redimensionnement d'une matrice représentée par un vector de vector
impliquerait de redimensionner chaque ligne ce qui est assez laid de
tous les points de vue. Bon, mon exemple de matrice avec des lignes de
différentes tailles en case d'exception n'est ni explicite, ni
pertinent, c'est vrai.
De toutes facons, si tu veux bosser avec des vraies matrices, faut plutot
aller fouiller du cote de valarray que de vector...
In article <46b9c32b$0$21534$, Michael DOUBEZ wrote:
Mon propos etait qu'un simple vector est mieux qu'un vector de vector. Le redimensionnement d'une matrice représentée par un vector de vector impliquerait de redimensionner chaque ligne ce qui est assez laid de tous les points de vue. Bon, mon exemple de matrice avec des lignes de différentes tailles en case d'exception n'est ni explicite, ni pertinent, c'est vrai.
De toutes facons, si tu veux bosser avec des vraies matrices, faut plutot aller fouiller du cote de valarray que de vector...