Smart Pointer = คลาสที่ wrap raw pointer จัดการ resource (หน่วยความจำ) ให้อัตโนมัติ ทำหน้าที่คล้าย garbage collector
ประเภทหลัก (C++11+)
std::unique_ptr- exclusive ownership, ไม่ copy ได้ (move only) ใช้เป็น default choicestd::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 แทน