Ich habe eine Anzahl von Klassen, für die ich die Heap-Zuweisung explizit verbieten möchte. Mir ist dieses Wochenende in den Sinn gekommen, dass ich den Operator einfach als privat (und nicht implementiert) deklarieren könnte ... Das führt natürlich zu Kompilierungsfehlern, wenn Sie versuchen, die Klasse zu ändern ... Meine Frage ist: Gibt es mehr dazu? Fehle ich etwas oder ist das eine gute Art zu tun, was ich will?Heap-Zuweisung explizit in C++ zu unterbinden
#include <stdio.h>
class NotOnTheHeap
{
public:
NotOnTheHeap() : foo(0)
{
}
private:
void *operator new(size_t);
void operator delete(void*);
void *operator new[](size_t);
void operator delete[](void*);
int foo;
};
class Heapable
{
private:
NotOnTheHeap noth;
};
int main(int argc, char* argv[])
{
NotOnTheHeap noth;
Heapable* heapable = new Heapable;
return 0;
}
Warum möchten Sie diese Klassen einschränken? – GManNickG
@GManNickG Sie können es aus Leistungs- und Architekturgründen einschränken. Warum Sie Programmierer dazu bringen können, dies nicht zu tun, ist es gut, Dinge an Ort und Stelle zu haben, die dies unterstützen. So werden zufällige oder unbeabsichtigte Regelverletzungen abgefangen. Es ist wahrscheinlich einfacher, wenn Ihre Klasse selbst dies erzwingen könnte, anstatt zu versuchen, eine statische Analyse-Regel zu schreiben. – iheanyi