Конструкторы предназначены для инициализации абстрактных типов данных, то есть объектов классов.
Имя конструктора должно совпадать с именем класса, конструктор явно или неявно вызывается при определении объекта класса, основное назначение конструктора – выделение участка памяти, превращение его в объект класса, с возможным заданием начальных значений.
В предыдущем примере задание начальных значений выполнялась с помощью метода define(), причем данные для инициализации (фамилия, имя, отчество, должность и оклад) вводились в вызывающей программе. Было бы более естественно оформить инициализацию экземпляра класса как конструктор и тем самым избежать ненужных подробностей и «лишних» переменных во внешней вызывающей программе – функции main().
#include <iostream.h>
struct FIO
{… …};
struct sotrudnik
{ …
…
// конструктор - инициализация через параметры
sotrudnik(FIO fnam , char m[] , float fokl)
{ name.familia = fnam.familia;
name.imya = fnam.imya;
name.otchestvo = fnam.otchestvo;
dol=m;
okl=fokl;
}
…
…
}; // конец определения класса
void main()
{ FIO chel;
char sot1[3][15]={"Иванов","Игорь","Александрович"};
chel.familia =sot1[0];
chel.imya =sot1[1];
chel.otchestvo =sot1[2];
// вызов конструктора с параметрами для объекта s1
sotrudnik s1(chel,"бухгалтер",60000);
s1.display(); // вызов метода display() объектом s1
}