Bonsoir les amis
comment je peux surcharger l'opérateur "~" et comment je peux l'utiliser?
c'est quoi la différence entre les opérateurs "~" et "delete" ?
Merci.
Bonsoir les amis
comment je peux surcharger l'opérateur "~" et comment je peux l'utiliser?
c'est quoi la différence entre les opérateurs "~" et "delete" ?
Merci.
On ne peut pas surcharger ~, qui n'est d’ailleurs pas un opérateur (en fait, il existe bien ~ en tant qu'opérateur unaire qui désigne la négation bit à bit, et qui est effectivement surchargeable, mais je pense que tu ne penses pas à ça ici).
~ permet de dénoter un destructeur, que ce soit pour le déclarer, le définir ou l'appeler explicitement (assez rarement une bonne chose, uniquement utile en combinaison avec le placement new).
delete permet de détruire un objet pointé par un pointeur.
Je ne suis pas certain de bien répondre à ta question, mais ma question est la suivante, plutôt que de partir des éléments du langage, pourrais-tu indiquer ce que tu cherches à obtenir ?
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Salut,
L'operator ~ est le non booléen bit à bit (différent du non logique "!"):
~1001 = 0110 (en écriture binaire)
L'operateur delete est l'opérateur de désallocation mémoire (ne pas confondre avec le destructeur !!!), qu'il est en général très déconseiller de redéfinir à moins d'avoir une excellente raison et de savoir exactement ce que l'on fait, ce qui apparemment n'est pas ton cas
Tu peux aller voir ici pour une liste (exhaustive ?) des opérateurs en c/c++.
Merci infiniment
voila maintenant je comprends de quoi s'agit-il
qu'est ce que je veux obtenir?
bon, je suis une formation de c++ et java
dans un chapitre des opérateurs, puisque je ne comprends pas bien, j'ai posé une question a mon prof de c++
si on surchargé le "~" est ce qu'il remplace le destructeur?
il m'a pas donné une réponse, mais il m'a demandé de préparer une petite exposition concernant tous ça.
merci encore une fois.
Bonsoir,
Je pense que la question est plutôt orientée déclaration explicite du destructeur, pour remplacer le destructeur par défaut.si on surchargé le "~" est ce qu'il remplace le destructeur?
En effet, dans une classe C++, si on ne défini pas le destructeur, il y aura un destructeur par défaut qui sera créé par le compilateur (comme le constructeur par défaut).
Maintenant, il est possible de définir explicitement le destructeur d'une classe.
(nom de la classe précédé du '~').
Mais il n'est pas possible de surcharger le destructeur(contrairement au constructeur).
Ca voudrait dire, définir plusieurs destructeurs de classe ayant le même nom, mais prenant des paramètres de différents types.
Or il n'est pas possible de passer de paramètre au destructeur, puisqu'il est appelé lors du delete de l'objet.
Pour bien comprendre, prenons un exemple :
Pour aller plus loin, je conseille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 pObj = new <Classe>(1); // appelle un constructeur; pObj2 = new <Classe>("coucou"); // appelle un autre constructeur; ... delete pObj; // appelle le destructeur delete pObj2; // appelle le même destructeur
- Les destructeurs
- Pourquoi et quand faut-il déclarer un destructeur virtuel
Peu de personne pensent à déclarer "virtual" le destructeur d'une classe dérivée![]()
Partager