ตัวสร้างการคัดลอกคืออะไร

ตัวสร้างสำเนาเป็นฟังก์ชันพิเศษใน C ++ และภาษาอื่น ๆ ที่ได้รับอิทธิพลจาก C ++ ที่คัดลอกวัตถุการเข้ารหัส โปรแกรมเมอร์ทำสิ่งนี้โดยการเพิ่มการประกาศตัวสร้างการคัดลอกและการอ้างอิงวัตถุ ในขั้นต้นนี้จะเป็นประโยชน์ต่อโปรแกรมเมอร์โดยประหยัดเวลา แต่ก็มั่นใจได้ว่าโปรแกรมเมอร์ไม่ได้ป้อนการเข้ารหัสของวัตถุไม่ถูกต้อง เมื่อทำการคัดลอกจะต้องมีตัวชี้หน่วยความจำที่แตกต่างกันหรือจะชี้ไปที่ส่วนเดียวกันกับที่วัตถุต้นฉบับกำลังชี้ หนึ่งในข้อเสียเปรียบที่สำคัญของการใช้ตัวสร้างสำเนาคือพวกเขาไม่สามารถทำงานได้อย่างอิสระ หากวัตถุต้นฉบับถูกลบไปแล้วก็จะมีการคัดลอกเช่นกัน

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

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

ในภาษา C ++ ฟังก์ชั่นจำนวนมากต้องการตัวชี้หน่วยความจำ นี่เป็นการบอกฟังก์ชันที่จะค้นหาข้อมูลในหน่วยความจำหรือที่เก็บข้อมูล โปรแกรมเมอร์ต้องระบุตัวชี้หน่วยความจำใหม่เมื่อใช้ตัวสร้างสำเนา มิฉะนั้นวัตถุทั้งสองจะใช้พื้นที่หน่วยความจำเดียวกัน บนพื้นผิวสิ่งนี้อาจดูไม่เลว แต่อาจนำไปสู่ความไม่สอดคล้องกันได้ ตัวอย่างเช่นหากวัตถุทั้งคู่ใช้ตัวชี้เดียวกันและใช้วัตถุหนึ่งเพื่อส่งใบสมัครสินเชื่อขณะที่วัตถุที่คัดลอกถูกสร้างขึ้นเพื่อส่งใบสมัครบัตรเครดิตแล้วใบสมัครบัตรเครดิตทั้งหมดจะถูกเก็บไว้ในใบสมัครสินเชื่อ

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