question sur l'opérateur new
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:
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