Конструктором называется функция-член, имя которой совпадает с именемкласса, он используется для построения значений, имеющих тип данногокласса. Если в классе есть конструктор, то каждый объект этого классаперед произвольным использованием будет инициализироваться, см.$$R.12.6. Конструктор может вызываться для объекта со спецификацией constили volatile. Сам конструктор нельзя описывать со спецификациейconst или volatile ($$R.9.3.1). Конструктор также не может иметьспецификацию virtual или static. Конструкторы не наследуются, однако, стандартные конструкторыи конструкторы копирования при необходимости создаются транслятором($$R.12.8). Такие конструкторы являются общими. Стандартным конструктором для класса X является такой конструкторкласса X, который можно вызывать без параметров. Стандартныйконструктор для класса X будет создан только тогда, когда для классаX не описано ни одного конструктора. Конструктором копирования для класса X называется конструктор,который вызывается для копирования объекта класса X, т.е. вызываетсяс одним параметром типа X. Например, X::X(const X&) иX::X(X&, int=0) являются конструкторами копирования. Конструкторкопирования создается только тогда, когда не описано ни одногоконструктора копирования. Конструктор копирования для класса X не должен иметь в качествепараметра объект типа X, например X::X(X) незаконное обращение. Конструктор для массива элементов вызывается в порядкевозрастания адресов элементов ($$R.8.2.4). Если у класса есть базовые классы с конструктором или члены,являющиеся объектами с конструктором, их конструкторы вызываютсяпрежде, чем конструктор производного класса. В $$R.12.6.2 объясняетсякак задаются параметры для таких конструкторов и как определяетсяпорядок их вызова. Объект класса с конструктором не может быть членом объединения. Для конструктора не нужно указывать никакого типа возвращаемогозначения, даже void. В операторе return в теле конструктора нельзяуказывать возвращаемое значение. Не допустима операция взятияадреса конструктора. Конструктор можно явно использовать для создания объектов еготипа с помощью следующей записи: имя-класса (список-выражений opt)Приведем пример: complex zz = complex(1,2.3); print(complex(7.8,1.2)); Объект, созданный таким образом является безымянным (если толькоконструктор не использовался для инициализации поименованной переменнойкак zz выше), а время его жизни ограничено выражением, в которомон был создан, см. $$R.12.2. В конструкторе можно вызывать функцию-член, см. $$R.12.7.