Язык С++ и программирование на нем. Рейзлин В.И. - 92 стр.

UptoLike

Составители: 

94
};
Константу можно инициализировать только в конструкторе, по-
пытка сделать это любым другим способом (например, с помощью дру-
гой компонентной функции) приведет к сообщению об ошибке. Ини-
циализация констант в теле конструктора тоже недопустима.
Заметим, что способ записи конструктора, обязательный для кон-
стант и данных абстрактных типов, можно использовать и для обычных
членов класса:
class ro{ int var; const c;
public:
ro (int v, int u): c(u), var (v) {}
};
18.9. Конструктор копирования и операция присваивания
При работе с объектами абстрактных типов может возникнуть си-
туация, когда один объект должен являться копией другого. При этом
возможны два варианта:
1) Вновь создаваемый объект должен стать копией уже имеюще-
гося.
2) Нужно скопировать один объект в другой, когда оба были соз-
даны ранее.
В первом случае используется конструктор копирования, во
втором операция присваивания.
Конструктор копирования это конструктор, первым аргументом
которого является ссылка на объект того типа, в котором этот конструк-
тор объявлен.
сlass cl{. . .
cl (cl&); // Конструктор копирования.
. . .
};
cl ca; // Здесь используется конструктор без аргумен-
тов.
cl cb = ca; // Используется конструктор копирования.
Инициализация копированием происходит и при передаче функ-
циям их аргументов и при возврате результата. Если аргумент или воз-
вращаемое значение имеет абстрактный тип, то неявно вызывается кон-