000
08.04.2005, 14:01 Uhr
~doppler
Gast
|
Hi, hat jemand Erfahrungen damit, die operatoren new und new[] selbst zu definieren? Ich möchte eigentlich einen operator new, der sich genauso verhält wie der Standard-Operator, aber eben ein private-member einer Klasse ist. Ist es richtig, dazu einfach im private-Abschnitt zu schreiben
C++: |
void* operator new(size_t s) { return malloc(s); }; void* operator new[](size_t s) { return malloc(s); };
|
oder kann man irgendwie die globalen Operatoren benutzen (z.B. using ::new oder so)?
Was ist, wenn man neue new-Operatoren hat und dann von der Klasse ableitet? Muss man dann in der abgeleiteten Klasse die Operatoren wieder selbst private machen oder weiß das der Compiler automatisch?
Hintergrund ist, dass ich einen Poiter-Typ habe, der mitzählt, wieviele dieser Pointer auf ein Objekt zeigen, und sobald keiner mehr darauf zeigt, das Objekt löscht. Wenn ich dann irgendwo aus Versehen auf die Idee komme, new aufzurufen, kann natürlich alles kaputt gehen. Andererseits muss man natürlich Pointer des neuen Typs erzeugen können und benötigt dafür das Standard-new. |