Bir kopya yapıcı , önceden başlatılmamış bir nesneyi başka bir nesnenin verilerinden başlatmak için kullanılır .
A(const A& rhs) : data_(rhs.data_) {}
Örneğin:
A aa;
A a = aa; //copy constructor
Bir atama operatörü , önceden başlatılmış bir nesnenin verilerini başka bir nesnenin verileriyle değiştirmek için kullanılır .
A& operator=(const A& rhs) {data_ = rhs.data_; return *this;}
Örneğin:
A aa;
A a;
a = aa; // assignment operator
Kopyalama yapısını varsayılan yapım artı atama ile değiştirebilirsiniz, ancak bu daha az verimli olacaktır.
(Bir yan not olarak: Yukarıdaki uygulamalarım, derleyicinin size ücretsiz olarak verdiği tamdır, bu yüzden onları manuel olarak uygulamak pek mantıklı olmaz. Bu ikisinden birine sahipseniz, bazı kaynakları manuel olarak yönetiyor olabilirsiniz. Bu durumda, The Rule of Three'ye göre , büyük olasılıkla diğerine ve bir yıkıcıya da ihtiyacınız olacak.)