Изменения
→конструкторы
=== конструкторы ===
Конструктор вызывается при создании объекта для его инициализации. Обозначается как одноимённая классу функция, не имеющая типа возвращаемого значения. Класс может иметь сколько угодно конструкторов с разными наборами параметров. Конструктор без параметров (или все аргументы которого имеют параметры по умолчанию) называется ''конструктором по умолчанию'', а конструктор с первым параметром-ссылкой на тот же класс — ''конструктором копирования''.
Array a(5); // вызывается Array::Array(int)
Array b; // вызывается Array::Array()
Array c(a); // вызывается Array::Array(const Array&)
Array d=a; // вызывается Array::Array(const Array&)
b=c; // происходит вызов оператора =
// если он не определён (как в данном случае), то вызывается
// сгенерированный компилятором оператор присваивания, который
// осуществляет копирование базовых подобъектов и почленное
// копирование нестатических членов-данных.
// как правило конструктор копий и оператор присваивания
// переопределяются попарно
Если в классе нет явно объявленных конструкторов, то он имеет неявно объявленный конструктор без параметров, который конструирует подобъекты классов-родителей и инициализирует поля класса с помощью конструкторов по умолчанию.
Конструктор копирования также неявно объявляется при отсутствии явного. Он выполняет копирование всех объявленных полей с помощью соответствующих конструкторов копирования.
Конструкторы не могут быть виртуальными.
=== деструкторы ===
=== const ===