Программирование на С++. Рейзлин В.И. - 8 стр.

UptoLike

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

9
По умолчанию создается также конструктор копирования
вида T::T(const T&), где Т имя класса. Конструктор копирования вызыва-
ется всякий раз, когда выполняется копирование объектов, принадлежа-
щих классу. В частности он вызывается:
а) когда объект передается функции по значению;
б) при построении временного объекта как возвращаемого значения
функции;
в) при использовании объекта для инициализации другого объекта.
Если класс не содержит явным образом определенного конструктора
копирования, то при возникновении одной из этих трех ситуаций произво-
дится побитовое копирование объекта. Побитовое копирование не во всех
случаях является адекватным. Именно для таких случаев и необходимо оп-
ределить собственный конструктор копирования. Например, в классе
string:
string(const string& st)
{len=strlen(st.len);
ch=new char[len+1];
strcpy(ch,st.ch); }
Можно создавать массив объектов, однако при этом соответствую-
щий класс должен иметь конструктор по умолчанию (без параметров).
Массив объектов может инициализироваться либо автоматически
конструктором по умолчанию, либо явным присваиванием значений каж-
дому элементу массива.
class demo{
int x;
public:
demo(){x=0;}
demo(int i){x=i;}
};
void main(){
class demo a[20]; //вызов конструктора без параметров(по умолча-
нию)
class demo b[2]={demo(10),demo(100)};//явное присваивание
Деструктор
Динамическое выделение памяти для объекта создает необходимость
освобождения этой памяти при уничтожении объекта. Например, если
объект формируется как локальный внутри блока, то целесообразно, чтобы