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

ความแตกต่างระหว่างตัวดำเนินการมอบหมายและตัวสร้างการคัดลอกใน C ++ คืออะไร


ตัวสร้างการคัดลอกและตัวดำเนินการกำหนดใช้เพื่อเริ่มต้นวัตถุหนึ่งไปยังวัตถุอื่น ความแตกต่างที่สำคัญระหว่างพวกเขาคือตัวสร้างการคัดลอกสร้างบล็อกหน่วยความจำแยกต่างหากสำหรับวัตถุใหม่ แต่ตัวดำเนินการมอบหมายจะไม่สร้างพื้นที่หน่วยความจำใหม่ ใช้ตัวแปรอ้างอิงเพื่อชี้ไปที่บล็อกหน่วยความจำก่อนหน้า

คัดลอกตัวสร้าง (ไวยากรณ์)

classname (const classname &obj) {
   // body of constructor
}

ตัวดำเนินการมอบหมาย (ไวยากรณ์)

classname Ob1, Ob2;
Ob2 = Ob1;

ให้เราดูความแตกต่างโดยละเอียดระหว่าง Copy Constructor และ Assignment Operator


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