Nick's answer là một điểm khởi đầu tốt, nhưng không đầy đủ, khi bạn thực sự cần phải quá tải:
private:
void* operator new(size_t); // standard new
void* operator new(size_t, void*); // placement new
void* operator new[](size_t); // array new
void* operator new[](size_t, void*); // placement array new
(thực hành tốt mã hóa sẽ đề nghị bạn cũng nên quá tải xóa và xóa nhà khai thác [] - Tôi sẽ, nhưng vì họ sẽ không có được gọi là nó không phải là thực sự cần thiết.)
Pauldoo cũng là đúng rằng điều này không tồn tại tập hợp trên Foo, mặc dù nó không tồn tại kế thừa từ Foo. Bạn có thể làm một số ma thuật lập trình meta template để HELP ngăn chặn điều này, nhưng nó sẽ không được miễn nhiễm với "người dùng xấu" và do đó có lẽ không đáng để biến chứng. Tài liệu về cách nó nên được sử dụng, và xem xét mã để đảm bảo nó được sử dụng đúng cách, là cách duy nhất ~ 100%.
Nguồn
2008-08-14 16:36:41
Tại sao bạn muốn thực hiện việc này? –
Điều ngược lại, điều này cũng có thể thú vị đối với người đọc: http://stackoverflow.com/questions/124880/is-it-possible-to-prevent-stack-allocation-of-an-object-and-only-allow- nó-to-be – kevinarpe