Bonjour
J'ai une question sur l'opérateur new.
Quand je lance le programme suivant, la valeur par défaut de l'opérateur size est 1.
Je voudrais déjà savoir si c'est possible de modifier la valeur par défaut pour ne plus qu'elle soit fixée à 1? Par exemple:
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
20
21
22
23
24
25
26
27
28 class X { public: static void * operator new(size_t size); static void * operator new(size_t, new_handler ) ; }; void * X::operator new(size_t size, new_handler p){ set_new_handler(p); return ::operator new(sizeof(X)*size); } void* X::operator new(size_t size){ return ::operator new(sizeof(X)*size); }; void specialErrorHandler(){ cerr<<"Erreur!!!";//il vaut mieux utiliser cerr+abort() que cout abort(); } int main(){ X *px1 =new(specialErrorHandler) X; // calls X::operator new X *px2 = new X; // error! }
X *px2=new(2) X, mais le compilateur refuse un tel appel.
Plus généralement,
quelle est la différence entre:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part int *o=new int(3);
Je vous remercie
Code : Sélectionner tout - Visualiser dans une fenêtre à part int *o=new int[2];
Partager