Объект может потребоваться для инициализации или создания или приравнивания к другому объекту, когда объект зависит от других объектов.
В этом случае конструктор копирования дает наилучшее решение .. потому что он не копирует объект в другой объект по крупицам. Побитовое копирование создает проблему, если память динамически выделяется для объекта. таким образом, решениями является определение copy_constructor в классе. Конструктор копирования использует ссылку на существующий объект того же типа, что и его аргумент, и используется для создания нового объекта из существующего. Вот пример для приравнивания объектов к другим объектам с помощью конструктора копирования.
#include "stdafx.h"
#include "iostream"
using namespace std;
class array
{
int *ptr;
int size;
public:
array (int sz) {
ptr = new int [sz];
size =sz;
for(int index=0;index<size;index++)
ptr[index]=size;
}
~array(){
delete[] ptr;
}
array(array &a) {
int index;
ptr=new int[a.size];
for(index=0;index<a.size;index++)
ptr[index]=a.ptr[index];
cout<<"copy_constructor invoked"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
array num(10);
array x(num); //invokes copy_constructor
array y=num; //invokes copy consturctor
return 0;
}