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

ความแตกต่างระหว่าง Copy Constructor และ Assignment Operator ใน C++

ในบทความนี้ เราจะทำความเข้าใจความแตกต่างระหว่าง copy constructor และ assignment operator ใน C++

Copy Constructor

  • เป็น constructor ที่ถูก overload
  • เริ่มต้นอ็อบเจกต์ใหม่ด้วยข้อมูล/ค่าของอ็อบเจกต์ที่มีอยู่แล้ว
  • ใช้เมื่อสร้างอ็อบเจกต์ใหม่ด้วยความช่วยเหลือจากอ็อบเจกต์ที่มีอยู่
  • ทั้งสองอ็อบเจกต์จะถูกเก็บในตำแหน่งหน่วยความจำที่ต่างกัน
  • ถ้าไม่ได้นิยาม copy constructor ภายในคลาส คอมไพเลอร์จะจัดหาให้เอง

Assignment Operator

  • เป็นออเปอเรเตอร์
  • มอบหมายค่าของอ็อบเจกต์หนึ่งให้อีกอ็อบเจกต์หนึ่ง โดยทั้งสองอ็อบเจกต์มีอยู่แล้ว
  • ใช้เมื่อต้องการมอบหมายอ็อบเจกต์ที่มีอยู่ให้อ็อบเจกต์ใหม่
  • มีการใช้ตำแหน่งหน่วยความจำเดียวในการเก็บอ็อบเจกต์นี้
  • แต่มีตัวแปรอ้างอิงหลายตัวที่ชี้ไปยังตำแหน่งของอ็อบเจกต์นี้
  • ถ้าออเปอเรเตอร์นี้ไม่ถูก overload จะสร้าง bitwise copy