Конструктор копирования
Конструктор копирования — это специальный вид конструктора, получающий в качестве единственного параметра указатель на объект этого же класса.
Например:
К::К(const &К) { /* тело конструктора */ };
где К — имя класса.
Этот конструктор вызывается в тех случаях, когда новый объект создается путем копирования существующего:
· при описании нового объекта с инициализацией другим объектом;
· при передаче объекта в функцию по значению;
· при возврате объекта из функции.
Если не указать ни одного конструктора копирования, то компилятор создаст его автоматически.
Следующий конструктор копирования выполняет поэлементное копирование всех полей:
class X {
int а, b; /* Вопрос для самопроверки: какими данными (приватными или публичными) являются эти переменные для класса X? */
Public:
X (int i, int j) {a = i; b = j;}
. . .
X xl (1, 2) , x2 = xl;
В этом случае происходит инициализация объекта х2 побитовым копированием всех полей объекта xl. Здесь конструктор копирования имеет форму скрытого вызова. Можно также сделать копирование явным.
#include <iostream.h>
class X{
Int m;
public:
X (int i) {m = i;}
Void print ();
X (X const &x) /* x — это формальное обозначение объекта
класса. Этот конструктос копирования создаст новый объект. */
{ m = x.m; }
};
Void main ()
{
X a(1);
X b = a;
/* С помощью объекта а: */
system("chcp 1251");
cout << "\nС помощью объекта a: ";
Дата добавления: 2015-07-30; просмотров: 625;