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

Smart Pointer ใน C++ คืออะไร และเมื่อไหร่ควรใช้


Smart Pointer = คลาสที่ wrap raw pointer จัดการ resource (หน่วยความจำ) ให้อัตโนมัติ ทำหน้าที่คล้าย garbage collector

ประเภทหลัก (C++11+)

  • std::unique_ptr - exclusive ownership, ไม่ copy ได้ (move only) ใช้เป็น default choice
  • std::shared_ptr - shared ownership, reference counting, copy ได้
  • std::weak_ptr - non-owning observer ของ shared_ptr ใช้แก้ circular reference

ทำไมควรใช้เกือบเสมอ

  • กำจัด manual memory management
  • ป้องกัน memory leaks (RAII)
  • Exception safe
  • Express ownership semantics ชัดเจน

หลีกเลี่ยง raw pointers new/delete ใน application code ทั่วไป ใช้ smart pointers แทน