Конструктор за копиране

Конструкторът за копиране (на английски: copy constructor), е специален конструктор в езика за програмиране C++, който се създава, за да се направи копие на обект.

Принципно, по време на компилация, компилаторът създава служебен (системен) конструктор за копиране (default copy constructor) за всеки клас. В случай обаче, когато програмистът създаде такъв конструктор, още се нарича потребителски дефиниран (user defined) конструктор за копиране, компилаторът не създава служебен (системен).

Най-често потребителски дефиниран конструктор за копиране се налага да се създаде, когато класът притежава член-данни, които са от тип указател, т.е когато в програмата се използва динамична памет. В този случай също така се налага и да се дефинират още два специални метода към класа, които заедно с конструктора за копиране образуват Голямата тройка.

Пример за конструктор за копиране редактиране

#include <iostream>
#include <string.h>
using namespace std;

class Example
{
    char* ex;

public:
//...
Example(const Example& other); // Декларация на конструктора за копиране
//...
};
//...
Example::Example(const Example& other)
{
    ex  = new char [strlen(other.ex) + 1];
    strcpy (ex, other.ex);
}
//...