Основные свойства и правила использования конструкторов:
– конструктор имеет то же имя, что и класс, в котором он объявляется;
– конструктор не возвращает значения (даже типа void);
– в программе невозможно получить адрес конструктора (указатель на конструктор);
– класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации;
– конструктор класса Х не может иметь аргумент типа Х;
– конструктор класса Х может иметь аргумент типа X& (ссылку на объект типа Х);
– конструктор может иметь аргументы, заданные по умолчанию;
– конструктор по умолчанию – это конструктор, который может быть вызван без аргументов;
– если конструктор не задан в программе, он будет автоматически сгенерирован компилятором для построения соответствующих объектов. Такой конструктор вызывает конструкторы по умолчанию для полей классов и конструкторы по умолчанию базовых (родительских) классов. Если класс содержит константы или ссылки, при попытке создания объекта класса будет выдана ошибка, так как их необходимо инициализировать конкретными значениями, что невозможно для конструктора по умолчанию. Все конструкторы, сгенерированные таким образом, имеют атрибут public;
– конструктор вызывается автоматически только при описании объекта;
– конструктор – это функция, но он не может быть виртуальным (его нельзя объявить с ключевым словом virtual);
– конструкторы нельзя описывать с модификаторами const и static;
– объект, содержащий конструктор, нельзя включить в виде компонента в объединение (union);
– конструктор не наследуется в производных классах. Если необходимо, то конструктор производного класса может вызывать конструкторы для его базовых (родительских) классов;
– конструктор, заданный в виде Х::Х&(const X&), называется конструктор копирования класса Х;
– для конструктора работает механизм доопределения имени. Например, можно рассмотреть конструкторы X::X(int), X::X(float) и т.п.;
– конструкторы глобальных объектов вызываются до вызова функции main. Локальные объекты создаются, как только становится активной область их действия. Конструктор запускается и при создании временного объекта (например, при передаче объекта из функции).