Sebuah copy constructor digunakan untuk menginisialisasi sebelumnya diinisiasi objek dari data beberapa objek lain.
A(const A& rhs) : data_(rhs.data_) {}
Sebagai contoh:
A aa;
A a = aa; //copy constructor
Sebuah operator penugasan digunakan untuk mengganti data dari sebelumnya diinisialisasi objek dengan data beberapa objek lain.
A& operator=(const A& rhs) {data_ = rhs.data_; return *this;}
Sebagai contoh:
A aa;
A a;
a = aa; // assignment operator
Anda dapat mengganti konstruksi salinan dengan konstruksi default ditambah tugas, tetapi itu akan kurang efisien.
(Sebagai catatan tambahan: Implementasi saya di atas persis seperti yang diberikan compiler kepada Anda secara gratis, jadi tidak masuk akal untuk mengimplementasikannya secara manual. Jika Anda memiliki salah satu dari keduanya, kemungkinan Anda mengelola beberapa resource secara manual. Dalam hal ini, sesuai The Rule of Three , Anda kemungkinan besar juga akan membutuhkan yang lain plus destruktor.)