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

C++ Discussion :

membre constant et surcharge =


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut membre constant et surcharge =
    Si je surcharge l'assignation (pas constructeur de copie) je n'ai pas la possibilité de recopier les membres constants (puisqu'un membre constant n'est définissable qu'à la construction de l'objet).

    Est-ce que ça s'arrête la et l'opérateur = même surchargée ne permet pas de recopier entièrement un objet avec des membres constants, ou est-ce que quelque chose m'échappe encore ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Non, un membre constant s'initialise uniquement à la construction de l'objet. Sinon il ne serait pas vraiment constant, n'est-ce pas ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Laurent Gomila
    Sinon il ne serait pas vraiment constant, n'est-ce pas ?
    et pourtant, le standard du C++ propose bien l'opérateur const_cast<>()...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 109
    Par défaut
    En général un const_cast signifie un problème de conception.
    Si on va par là on peut aussi dire que C++ propose goto
    C'est extrêmement rare d'avoir à utiliser ce type de mots clefs.

    Si vraiment tu as besoin d'une telle variable tu peux utiliser le mot clé mutable (par exemple pour un compteur)

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Quel est le sens de vouloir copier un objet qui a un membre constant ?
    Tout ce que tu peux faire, c'est détecter que le membre constant du this est bien égal à son alter-ego dans l'opérarande droite -- pour lever une exception si ce n'est pas le cas.

    PS: un objet ne peux pas être const et mutable à la fois. <je précise car cela risque de ne pas être clair dans ton message, que tu parles d'autre chose>
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Donc... une objet qui a un membre constant, est un objet "constant".
    Et on ne peut pas assigner un objet "constant" à un autre objet de la même classe.

    Pourquoi ce n'est (générallement) pas indiqué dans les manuelles, c'est vachement important (surtout pour les habitués du Java).

Discussions similaires

  1. Fonction membre constante, cas litigieux..
    Par Bakura dans le forum C++
    Réponses: 13
    Dernier message: 11/05/2009, 13h40
  2. Donnée membre constante d'une classe en c++
    Par bmmdrs dans le forum C++
    Réponses: 2
    Dernier message: 18/01/2009, 14h11
  3. Réponses: 14
    Dernier message: 10/05/2008, 01h54
  4. Réponses: 1
    Dernier message: 10/02/2006, 12h10
  5. Réponses: 6
    Dernier message: 08/11/2004, 18h23

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