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.

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!
}
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:
X *px2=new(2) X, mais le compilateur refuse un tel appel.


Plus généralement,
quelle est la différence entre:
et
Je vous remercie