IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

L'héritage est-il compatible avec la sémantique de mouvement ?


Sujet :

Langage C++

  1. #1
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut L'héritage est-il compatible avec la sémantique de mouvement ?
    Salut,
    Je rebondis sur cette remarque et sur les commentaires de l'article d'Emmanuel sur la sémantique d'entité/valeur pour poser la question : L'héritage est-il compatible avec la sémantique de mouvement ?

    Le slicing me semble même presque pire que pour la copie puisqu'on se retrouve avec un ancien objet (celui qui a fait l'objet du déplacement) à moitié vide si on fait le déplacement à partir d'un type de base.

    Il y a au - deux questions : est-ce que dans le principe, la sémantique de déplacement est compatible avec l'héritage. Et la seconde, est ce que l'implémentation des opérateurs de mouvements (constructeurs, affectation) pour une hiérarchie ne risque-t-elle pas d'être source d'erreur et quelles seraient alors les bonnes pratiques ?

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Salut,

    Sans parler directement de polymorphisme, mais pour ce qui est des rapports entité/déplacement, je me souviens d'avoir soutenu ici sur developez une opinion naïve, similaire à ce qui semble émaner de l'article d'Emmanuel, grosso-modo "toute entité est déplaçable" :
    Citation Envoyé par Arzar
    Je pense d'ailleurs qu'avec l'arrivé du C++0x cette idée de sémantique d'entité devra maintenant inclure le déplacement au même titre que la non-copiabilité. Si on reprend la définition de la faq :
    Citation Envoyé par FAQ
    A l'inverse des classes à sémantique de valeur, une classe a une sémantique d'entité si toutes les instances de cette classe sont nécessairement deux à deux distinctes, même si tous les champs de ces instances sont égaux. Elle modélise un concept d'identité : chaque objet représente un individu unique.
    Je ne vois pas trop de raison qui empêcherait le déplacement de cet "individu unique".
    Ce à quoi Jean-Marc Bourquet avait répondu - et après coup, je pense qu'il a raison -

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Ce qui fait l'individu ce n'est pas le contenu de ses membres, c'est son adresse. Et ça ce n'est pas transférable. Ce qui est transférable, c'est les responsabilités de l'individu.

    Pour pouvoir donner les opérations de déplacement à une classe ayant une sémantique d'entité, il faut que la classe ait une responsabilité transférable -- sinon il n'y a rien à déplacer -- et que celle-ci soit suffisamment importante (vraisemblablement ce sera le seul objectif dans la plupart des cas) pour que l'utilisation ne semble pas artificielle. Je ne vois guère -- mais j'ai la curieuse impression d'oublier quelque chose -- que des classes techniques, proches des classes RAII (les responsabilités que celles-ci ont est en effet quelque chose de transférable et cette responsabilité est leur seul objet)
    L'échange vient de ce thread.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/09/2008, 13h27
  2. Eclipse est-il compatible avec vista ?
    Par karray_ali dans le forum Eclipse Java
    Réponses: 24
    Dernier message: 27/04/2007, 11h50
  3. [Plugin checkStyle 4.3.0] Est-il compatible avec Java 5.0 ?
    Par 17mounir dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 02/02/2007, 15h26
  4. Réponses: 6
    Dernier message: 31/10/2006, 10h55
  5. Réponses: 7
    Dernier message: 11/09/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo