Теперь, когда наш данные надёжно спрятаны с помощью
спецификатора privatе, попробуем их проинициализировать:
Vector a = {0, 0, 0};
Но тут компилятор выдаст ошибку: Что же делать?. Получается, что у нас есть доступ к этим переменным через showVector , а как же задать этим переменным начальные значения?
Если вы попытаетесь следующий способ:
class Vector
{
private:
int x=0;
int y=0;
int z=0;
То конечно же компилятор и тут выдаст ошибку, так как при определении класса память не выделяется.
Итак, в каждом классе есть специальная функция, которая вызывается каждый раз когда создаётся объект класса. Это функция называется конструктором класса. Если вы явно не создаёте конструктор, то компилятор вызывает конструктор по умолчанию.
Конструктор - это обычная функция, только в ней нет возвращаемого значения. Имя конструктора совпадает с именем класса. Конструктор должен располагаться в блоке public.
Конструктор вызывается при создании объектов класса:
Vector a, b, c;
Здесь для обоих объектов a, b, c вызывается конструктор.
Возможна и такая форма записи:
Vector a(), b();
Здесь как бы указывается, что при создании a, b и c вызывается функция (конструктор).
Кстати! Конструкторы вызываются не только для пользовательских типов данных, но и для стандартных. Например, при определении переменной типа char вызывается соответствующий конструктор. При этом данный конструктор выделяет память под переменную - один байт.