Hàm hủy private ngăn chặn tạo đối tượng trên stack (auto storage) vì compiler không thể gọi destructor khi ra khỏi scope. Tuy nhiên:
- Không tạo đối tượng → OK.
- Tạo con trỏ
MyClass* p;(chưa new) → OK. new MyClass→ OK (trách nhiệm programmer gọi delete).delete p→ LỖI (destructor private).
Ví dụ
class MyClass {
private: ~MyClass() {}
};
int main() {
// MyClass obj; // LỖI: destructor private
// MyClass* p = new MyClass; // OK
// delete p; // LỖI: destructor private
}
Ứng dụng: Singleton pattern, object pool, hoặc ép buộc quản lý vòng đời qua factory function.