Destructor ที่เป็น private ส่งผลต่อการสร้างและทำลาย object:
กรณีที่ OK (ไม่สร้าง object)
class A { private: ~A() {} };
int main() {} // OK: ไม่มี object ถูกสร้าง
กรณี Error: Stack Object
class A { private: ~A() {} };
int main() { A obj; } // Error: destructor inaccessible
กรณี OK: Pointer เท่านั้น (ไม่ new)
int main() { A *ptr; } // OK: ไม่มี object จริง
กรณี OK: new (แต่ต้องจัดการเอง)
int main() { A *ptr = new A; } // OK: compiler คิดว่า programmer จะ delete เอง
กรณี Error: delete
int main() { A *ptr = new A; delete ptr; } // Error: private destructor
Private destructor ใช้ควบคุม object lifetime เช่น Singleton pattern หรือ object pool