ในบทความนี้ เราจะทำความเข้าใจความแตกต่างระหว่าง copy constructor และ assignment operator ใน C++
Copy Constructor
- เป็น constructor ที่ถูก overload
- เริ่มต้นอ็อบเจกต์ใหม่ด้วยข้อมูล/ค่าของอ็อบเจกต์ที่มีอยู่แล้ว
- ใช้เมื่อสร้างอ็อบเจกต์ใหม่ด้วยความช่วยเหลือจากอ็อบเจกต์ที่มีอยู่
- ทั้งสองอ็อบเจกต์จะถูกเก็บในตำแหน่งหน่วยความจำที่ต่างกัน
- ถ้าไม่ได้นิยาม copy constructor ภายในคลาส คอมไพเลอร์จะจัดหาให้เอง
Assignment Operator
- เป็นออเปอเรเตอร์
- มอบหมายค่าของอ็อบเจกต์หนึ่งให้อีกอ็อบเจกต์หนึ่ง โดยทั้งสองอ็อบเจกต์มีอยู่แล้ว
- ใช้เมื่อต้องการมอบหมายอ็อบเจกต์ที่มีอยู่ให้อ็อบเจกต์ใหม่
- มีการใช้ตำแหน่งหน่วยความจำเดียวในการเก็บอ็อบเจกต์นี้
- แต่มีตัวแปรอ้างอิงหลายตัวที่ชี้ไปยังตำแหน่งของอ็อบเจกต์นี้
- ถ้าออเปอเรเตอร์นี้ไม่ถูก overload จะสร้าง bitwise copy