cerhu > sci.* > sci.divers

Lucas Levrel (16/05/2016, 11h06)
Le 15 mai 2016, François Guillet a écrit :

> Pour le fun, sur le js vu par le W3C.
> Comment supprimer un élément HTML, par exemple une url.
> element.delete; ?
> Bien sûr que non. Trop simple !
> Il faut demander à son parent de retirer cet enfant !
> element.parentNode.removeChild(element);


À vue de nez, je dirais que le père contient un pointeur vers le fils, si
le fils s'efface lui-même le père se retrouve avec un pointeur invalide ;
et le fils n'a pas le droit de modifier le père. En C++, un objet peut
s'effacer lui-même ? N'est-ce pas plutôt le propriétaire du pointeur qui
fait « delete ptr; » ?
François Guillet (18/05/2016, 14h01)
Lucas Levrel avait énoncé :
> Le 15 mai 2016, François Guillet a écrit :
>> À vue de nez, je dirais que le père contient un pointeur vers le fils, si le

> fils s'efface lui-même le père se retrouve avec un pointeur invalide ; et le
> fils n'a pas le droit de modifier le père.


Il suffirait d'implémenter la méthode "delete" de l'objet "element",
méthode qui en détruisant l'élément, retirerait aussi du parent le
pointeur invalide. Ce devrait être du ressort du js.
C'est d'autant plus exigible que retirer un élément HTML à un parent
est fonctionnellement équivalent à le détruire, puisqu'il est rendu
inutilisable.

> En C++, un objet peut s'effacer
> lui-même ? N'est-ce pas plutôt le propriétaire du pointeur qui fait « delete
> ptr; » ?


En C++, chaque classe a un destructeur par défaut : on n'a pas à s'en
préoccuper, sauf cas particuliers où l'on veut fournir la méthode
spécifique qui sera appelée. Le destructeur étant une méthode implicite
ou explicite de l'objet, utiliser l'opérateur "delete" revient à
demander à l'objet de s'auto-détruire. Je pense qu'on pourrait
parfaitement inclure "delete" dans les méthodes de l'objet, méthode qui
appellerait le destructeur, pour obtenir par un "objet->delete()" la
même chose qu'un "delete ptrObjet" (pas essayé).
robby (19/05/2016, 07h56)
On 18/05/2016 14:01, François Guillet wrote:
> En C++, chaque classe a un destructeur par défaut : on n'a pas à s'en
> préoccuper, sauf cas particuliers où l'on veut fournir la méthode
> spécifique qui sera appelée. Le destructeur étant une méthode implicite
> ou explicite de l'objet, utiliser l'opérateur "delete" revient à
> demander à l'objet de s'auto-détruire. Je pense qu'on pourrait
> parfaitement inclure "delete" dans les méthodes de l'objet, méthode qui
> appellerait le destructeur, pour obtenir par un "objet->delete()" la
> même chose qu'un "delete ptrObjet" (pas essayé).


ça ne regle en rien le probleme des pointeurs vers cet objet (par ex le
parent hierarchique).
pehache (19/05/2016, 09h16)
Le 19/05/2016 07:56, robby a écrit :
> On 18/05/2016 14:01, François Guillet wrote:
> parent hierarchique).


A moins d'avoir un ramasse-miette, mais je crois pas que ce soit le cas
en C++ ?
Cl.Massé (19/05/2016, 11h26)
"pehache" a écrit dans le message de groupe de discussion :
dq57i6FmcdbU1...

> Le 19/05/2016 07:56, robby a écrit :
> A moins d'avoir un ramasse-miette, mais je crois pas que ce soit le cas en
> C++ ?


Il ne faut pas confondre la destruction de l'objet, qui consiste
essentiellement à libérer les ressources qu'il utilise, et libérer sa
mémoire associée. Il y a bien deux opérations qu'il faut appeler pour qu'il
n'y ait pas de fuite de mémoire. La destruction d'un objet est toujours
appelée implicitement, même si le destructeur est explicite. Le destructeur
peut à son tour libérer la mémoire des objets vers lesquels l'objet détruit
pointe.

En java où il y a un ramasse miette, la mémoire d'un objet est libérée quand
il n'y a plus de pointeur vers lui, les ressources qu'il utilise sont
effacées de la même façon. Les opérations sont également séparées. En C++
il peut arriver qu'un objet devienne inaccessible, c'est le seul problème.

-- ~~~~ clmasse on free F-country
Liberty, Equality, Profitability.
robby (19/05/2016, 20h58)
On 19/05/2016 09:16, pehache wrote:
> A moins d'avoir un ramasse-miette, mais je crois pas que ce soit le cas
> en C++ ?


le principe du ramasse miette, c'est de libéré ce qui n'est plus pointé
par personne.

Donc ça ne regle tj pas le probleme de dire au pere qu'il n'a plus de fils.
François Guillet (26/05/2016, 13h01)
robby a pensé très fort :
....
> le principe du ramasse miette, c'est de libéré ce qui n'est plus pointé par
> personne.
> Donc ça ne regle tj pas le probleme de dire au pere qu'il n'a plus de fils.


Ce n'est pas un problème de langage, c'est un problème d'implémentation
des objets HTML (c'est ce que je voulais dire quand je disais avec
ambiguité que la méthode "element.delete" devrait être traitée par le
"js").

Un élément HTML pourrait disposer par défaut de la méthode "delete" qui
serait équivalente au palliatif utilisé actuellement. Il suffit que
"element.delete" appelle la même méthode d'arrière-plan que
"element.parentNode.removeChild(element)".

Le problème ici, c'est que le W3C n'a pas de sens pratique. Des cas
comme ça, il y en a à la pelle (sans parler des manières différentes
pour arriver à un résultat identique, sur des opérations pourtant
élémentaires, ce qui signe une redondance inutile des objets et
méthodes).
Discussions similaires
[VBA] Connaitre le numéro d'élément d'un élément d'une collection

css sélectionner le dernier élément sous un élément donné dans un autre élément (liste de définition)

fenetre deplacer un element copier un element incessante lors d'e certaine action.

surcharge operateurs new, new[], delete, delete[]


Fuseau horaire GMT +2. Il est actuellement 03h03. | Privacy Policy