Tôi có một số lớp mà tôi muốn không cho phép phân bổ heap cho. Nó xảy ra với tôi cuối tuần này mà tôi chỉ có thể tuyên bố điều hành mới tư nhân (và unimplemented) ... Chắc chắn, điều này dẫn đến biên dịch lỗi khi bạn cố gắng mới lớp ... Câu hỏi của tôi là: Có nhiều hơn để điều này? Tôi có thiếu cái gì hay đây là cách tốt để làm những gì tôi muốn?Rõ ràng không cho phép phân bổ đống trong C++
#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;
}
Tại sao bạn muốn hạn chế các lớp này? – GManNickG
@GManNickG Bạn có thể muốn hạn chế nó vì lý do hiệu suất và kiến trúc. Tại sao bạn chắc chắn có thể hướng dẫn các lập trình viên không làm như vậy, nó là tốt để có những thứ tại chỗ * giúp * thực hiện điều này. Vì vậy, vi phạm ngẫu nhiên hoặc vô ý của quy tắc được đánh bắt. Nó có thể đơn giản hơn nếu lớp của bạn có thể thực thi điều này hơn là cố gắng viết một quy tắc phân tích tĩnh để làm như vậy. – iheanyi