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 :

surcharge operateur &


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut surcharge operateur &
    Bonjour à tous

    Dans un tp de prog en c++ on me demande de surcharger l'opérateur & pour qu'il affiche et renvoie l'adresse de l'objet.
    J'arrive à le faire mais je n'en vois pas l'intéret.
    Ma question est donc comme vous pouvez le deviner est :

    Quel est interet de surcharger l'opérateur & ?

    Merci d'avance de vos réponses

  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
    Citation Envoyé par kekelg2006 Voir le message
    Bonjour à tous

    Dans un tp de prog en c++ on me demande de surcharger l'opérateur & pour qu'il affiche et renvoie l'adresse de l'objet.
    J'arrive à le faire

    Et tu fais comment exactement ?

    Edit : Ok j'ai pigé. Effectivement je n'en vois pas d'intérêt immédiat non plus à part peut être démontrer que le C++ permet de faire des trucs vraiment dingue des fois et qu'il faut donc apprendre à se méfier de tout, même d'un innocent &

  3. #3
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    En même temps, c'est pas le but de l'opérateur &? (ok il affiche pas, mais il renvoie l'adresse).

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par Goten Voir le message
    En même temps, c'est pas le but de l'opérateur &? (ok il affiche pas, mais il renvoie l'adresse).
    Sauf erreur, lorsque surchargé, l'opérateur & a normalement pour but... d'effectuer un AND binaire...

    En effet, l'opérateur & servant comme "opérateur permettant d'obtenir l'adresse de" n'est pas surchargeable, par contre, l'opérateur de comparaison binaire bien

    L'idée générale étant, par exemple, de le définir pour une énumération proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    enum eMyEnum
    {
        meValue1 = 1<<0,
        meValue2 = 1<<1,
        meValue3 = 1<<2 /*,
        ...
        */
    };
    sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    eMyEnum operator & (eMyEnum e1, eMyEnum e2)
    {
        return eMyEnum(static_cast<int> e1 & static_cast<int> e2);
    }
    Autrement dit, tu peux proprement enguirlander ton prof pour te demander de faire quelque chose de tout à fait erroné

    [EDIT]PS: Ce sont les opérateur * (ce qui est pointé par) et -> ((l'élément du pointeur) qui peuvent être surchargés, lorsque ta classe a sémantique de pointeur ( comme c'est le cas pour les itérateurs )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Ben si Koala, justement, l'opérateur & ("address-of operator") EST surchargeable, c'est ce que j'ai découvert avec stupeur en essayant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream>
     
    struct S
    {
        S* operator& ()
        {
            std::cout << this << std::endl;
            return (S*)0x666;
        }
        int i;
    };
     
    int main()
    {
        S s;
        S* sptr = &s;
        sptr->i = 5; // OUCH
    }

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Désolé koala, mais l'opérateur adresseof est surchargeable .

    Et donc je me répète : au final ta surcharge à le comportement par défaut de l'opérateur... je capte pas. (a moins que ça soit juste pour l'affichage que le prof voulait surcharger?)

    Citation Envoyé par La norme
    13.5.2
    Both the unary and binary forms of
    + - * &
    can be overloaded.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. surcharge operateur delete et héritage
    Par Hervé dans le forum C++
    Réponses: 5
    Dernier message: 29/03/2006, 13h59
  2. Surcharge operateur =
    Par rulianf dans le forum C++
    Réponses: 9
    Dernier message: 23/02/2006, 00h32
  3. [debutante] surcharge operateur <<
    Par norkius dans le forum Débuter
    Réponses: 3
    Dernier message: 24/10/2005, 12h20
  4. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51
  5. surcharge operateur && pointeurs
    Par le y@m's dans le forum C++
    Réponses: 6
    Dernier message: 10/05/2005, 15h57

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