Surdefinition operateurs c++
Résolu
hamed01
Messages postés
207
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je programme en C++
Je voudrais surdefinir l'operateur new pour compter le nombre de variables dynamiques alloués.
Après recherches, je ne trouve toujours pas.
Est-il possible de surdefinir cet opérateur? Si oui comment, avec quelle fonction???
Merci d'avance.
Je programme en C++
Je voudrais surdefinir l'operateur new pour compter le nombre de variables dynamiques alloués.
Après recherches, je ne trouve toujours pas.
Est-il possible de surdefinir cet opérateur? Si oui comment, avec quelle fonction???
Merci d'avance.
A voir également:
- Surdefinition operateurs c++
- Quels sont les préfixes des opérateurs de téléphonie mobile en france - Guide
- Opérateurs france - Guide
- Avoir 2 opérateurs mobile - Forum Mobile
- Création de requête - opérateurs ✓ - Forum Access
- Avis sur les opérateurs téléphonique ✓ - Forum Mobile
3 réponses
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.
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 +
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.