Surdefinition operateurs c++
Résolu/Fermé
hamed01
Messages postés
207
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2011
-
17 janv. 2010 à 12:29
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 17 janv. 2010 à 17:09
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 17 janv. 2010 à 17:09
A voir également:
- Surdefinition operateurs c++
- Operateurs |= &= ~ en langage C ✓ - Forum C
- Opérateurs virtuels - Guide
- Combien de temps les opérateurs conservent les sms - Forum Mobile
- Classement des operateurs internet en france - Accueil - Guide opérateurs et forfaits
- Changement automatique d'opérateurs - Forum Mobile
3 réponses
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
17 janv. 2010 à 16:43
17 janv. 2010 à 16:43
Un exemple vaut mieux qu'un long discours:
D'autre part, recherche des infos car il y a beaucoup de choses à savoir et qui ne sont pas dites explicitement dans cet exemple.
Bonne continuation.
#include <cstdlib> #include <iostream> using namespace std; class Objet { public: static int numObjet; void* operator new(size_t tailleObjet) { numObjet++; return (malloc(tailleObjet)); } void operator delete(void* p) { numObjet--; } private: int var; }; int Objet::numObjet; int main(int argc, char *argv[]) { Objet* p1 = new Objet; cout << "numObjet = " << Objet::numObjet << endl; Objet* p2 = new Objet; cout << "numObjet = " << Objet::numObjet << endl; delete p2; cout << "numObjet = " << Objet::numObjet << endl; Objet* p3 = new Objet; cout << "numObjet = " << Objet::numObjet << endl; delete p3; cout << "numObjet = " << Objet::numObjet << endl; delete p1; cout << "numObjet = " << Objet::numObjet << endl; return EXIT_SUCCESS; } [loupius@p3000]$ g++ -Wall essai.cpp [loupius@p3000]$ ./a.out numObjet = 1 numObjet = 2 numObjet = 1 numObjet = 2 numObjet = 1 numObjet = 0 [loupius@p3000]$Ceci est un mauvais exemple car on peut faire plus simple avec le constructeur, mais cet exemple fonctionne.
D'autre part, recherche des infos car il y a beaucoup de choses à savoir et qui ne sont pas dites explicitement dans cet exemple.
Bonne continuation.
hamed01
Messages postés
207
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
22 juillet 2011
24
17 janv. 2010 à 16:56
17 janv. 2010 à 16:56
Merci
Je n'aurai pas imaginé le prototype: void* operator new(size_t tailleObjet)
surtout avec l'espace entre operator et new :p
Tu m'enlève une épine du pied.
Allez merci et a +
Je n'aurai pas imaginé le prototype: void* operator new(size_t tailleObjet)
surtout avec l'espace entre operator et new :p
Tu m'enlève une épine du pied.
Allez merci et a +
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
17 janv. 2010 à 17:09
17 janv. 2010 à 17:09
surtout avec l'espace entre operator et new
Ben je vois pas trop comment le compilateur pourrait s'y retrouver; cela ne provoquerait pas d'erreur mais le nouveau 'new' ne serait pas appellé pas plus que la fonction 'operatornew'. Pour ce qui est du 'void*' et du paramètre 'size_t', c'est obligatoire avec 'new'.
Bonne réflexion.
Ben je vois pas trop comment le compilateur pourrait s'y retrouver; cela ne provoquerait pas d'erreur mais le nouveau 'new' ne serait pas appellé pas plus que la fonction 'operatornew'. Pour ce qui est du 'void*' et du paramètre 'size_t', c'est obligatoire avec 'new'.
Bonne réflexion.