Surdefinition operateurs c++
Résolu
hamed01
Messages postés
212
Statut
Membre
-
loupius Messages postés 789 Statut Membre -
loupius Messages postés 789 Statut Membre -
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
- Avis sur les opérateurs téléphonique ✓ - Forum Mobile
- 1 maison, 2 opérateurs internet ? - Forum Freebox
- 33700: Attention arnaque opérateurs mobiles - 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.