Конструктор копирования

Назначение:

1) создать объект полностью совпадающий с уже созданным;

2) передача в некоторую функцию экземпляра класса, при этом в стеке создается локальная копия объекта, с которым и работает функция;

3) функция передает в некоторую переменную объект класса, фактически этот объект сначала создается в функции как локальная переменная, и лишь затем копируется в переменную, стоящую в левой части выражения.

Операции копирования объектов выполняет конструктор копирования.

В большинстве случаев компилятор предоставляет нам конструктор копирования по умолчанию, обеспечивая правильное копирование.

Копирование по умолчанию:

class T {

int x, y;

public:

T (int tx, int ty) { x = tx; y = ty; }

int GetX () { return x; }

int GetY () { return y; }

friend T sum (T, T);

};

Void Print (T obj)

{ cout<<’\n’<<”x=”<<obj.GetX() <<” y=”<<obj.GetY(); }

T sum (T obj1, T obj2)

{ obj1. x + =obj2. x;

obj1. y + =obj2. y;

return obj1; }

#include <iostream.h>

void main () {

T e1 (1, 10); //создали объект, вызвав конструктор с параметрами

Print (e1); // первое копирование

T e2 = e1; // второе копирование

Print (e2); // третье копирование

T e3 = sum (e1, e2); // четвертые копирования

Print (e3); // пятое копирование

}

// выведется:

// x= 1 y = 10

x= 1 y = 10

x= 2 y = 20


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: