Skip to main content

ตัวสร้างสำเนาคืออะไร?

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

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

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

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

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