Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm hủy (Destructor) private trong C++


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.