Конструктор в C++, как и в других объектно-ориентированных языках программирования это специальная функция, направленная на инициализацию, то есть создание, подготовку к работе, определение параметров, экземпляра класса.
При создании класса программист обычно создает собственный конструктор или даже несколько, но если их нет, то компилятор вставит конструктор по умолчанию. Конструктор по умолчанию инициализирует объект класса и более не делает ничего. Тогда как можно прописать в нем инициализацию объектов внутри класса, и даже совершать разные действия при разном виде вызова.
Рассмотрим пример.
1 2 3 4 5 6 7 8 9 |
class Cwc { int c; int d; public: Cwc (int a) {c=a; d=a;} /* конструктор №1 */ Cwc (int a, b) {c=a; d=b;} /* конструктор №2 */ }; |
У нас есть класс Cwc у которого два конструктора. При разных вызовах данного класса инициализация происходит по-разному. Если добавить в код строку
1 |
Cwc a(5); |
то программа вызовет первый конструктор, и переменные c и d примут одинаковое значение 5. А если вызвать класс строкой
1 |
Cwc a(5, 12); |
то конструктор присвоит 5 и 12 переменной c и d соответственно.
Для создания конструкторов существует несколько правил.
- Конструктор имеет то же имя что и сам класс.
- Если конструкторов несколько, они должны различаться параметрами (как в примере выше, когда первый конструктор имеет один параметр, а второй несколько). В случае совпадения количества параметров они должны отличаться типом хотя бы одного параметра.