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

UptoLike

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

96
public:
prim (int i, float x){n=i; v=x;}
prim (const prim &obj, int i){ n = i; v = obj.v; }
};
void main() {
prim obj1(10, 23.5);
// Сейчас будет использован конструктор копирования по умолча-
нию
prim obj2=obj1;
// а сейчас будет использован явно определенный конструктор,
// причем копируется лишь часть объекта:
prim obj3(obj,12);
}
Отметим, что модификатор const используется для предотвраще-
ния изменения копируемого объекта.
Объект одного класса можно инициализировать значением объек-
та другого класса. При этом конструктор не является конструктором
копирования, так как в качестве аргумента в нем фигурирует ссылка на
объект другого класса:
struct s1{int i; float x;
s1(int j, float y){i = j; x = y;}
};
struct s2{int i; float x;
s2 (const s1& a){ // Это не конструктор копирования!
i =a.i; x=a.x;}
};
void main(){
s1 obj1 (1, 3.7);
s2 obj2 (obj1);
}
В отличие от конструктора копирования, операция присваивания
используется тогда, когда объекты, являющиеся операндами этой опе-
рации, уже существуют. Операция присваивания, наряду с операцией
получения адреса, предопределена для объектов абстрактных типов по
умолчанию, и ее можно использовать без каких либо дополнительных
действий со стороны программиста.
class cl{. . . };