ตัวสร้างการคัดลอกใช้เพื่อเริ่มต้นอ็อบเจ็กต์ที่ไม่ได้เริ่มต้นก่อนหน้านี้จากข้อมูลของอ็อบเจ็กต์อื่น
A(const A& rhs) : data_(rhs.data_) {}
ตัวอย่างเช่น:
A aa;
A a = aa; //copy constructor
ผู้ประกอบการที่ได้รับมอบหมายจะใช้ในการแทนที่ข้อมูลของการเริ่มต้นก่อนหน้านี้วัตถุที่มีข้อมูลบางส่วนวัตถุอื่น ๆ
A& operator=(const A& rhs) {data_ = rhs.data_; return *this;}
ตัวอย่างเช่น:
A aa;
A a;
a = aa; // assignment operator
คุณสามารถแทนที่การสร้างสำเนาด้วยโครงสร้างเริ่มต้นบวกการกำหนด แต่จะมีประสิทธิภาพน้อยกว่า
(หมายเหตุด้านข้าง: การใช้งานของฉันข้างต้นเป็นสิ่งที่คอมไพเลอร์มอบให้คุณฟรีดังนั้นจึงไม่สมเหตุสมผลที่จะใช้งานด้วยตนเองหากคุณมีหนึ่งในสองอย่างนี้เป็นไปได้ว่าคุณกำลังจัดการทรัพยากรบางอย่างด้วยตนเอง ในกรณีนั้นตามกฎสามข้อคุณอาจต้องใช้อีกอันหนึ่งบวกกับตัวทำลายด้วย)