Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Private Destructor ใน C++

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