Глава 14. Базовые концепции классов____________________________343
В эту группу входит четыре очень специальных члена, которые должны учитываться при создании каждого класса: конструктор по умолчанию, деструктор, конструктор копий и операция присваивания. Заметьте, что это не значит, что вы должны писать эти четыре функции для каждого класса; речь шла только о том, что вы должны принимать их во внимание при создании любого класса.
Эти четыре члена являются функциями, но не типичными. Они выглядят совсем как функции, но, как несложно заметить, некоторые из них не возвращают значений. Эти функции предназначены для инициализации, копирования и деинициализации объектов класса.
Конструкторы
Конструкторы — это члены классов, используемые для создания объектов — экземпляров классов. Есть несколько разновидностей конструкторов, в их числе есть довольно своеобразные, но основное их назнааение в любом случае одно и то же: обеспечение удобного способа создания объекта — экземпляра класса.
В этом разделе мы рассмотрим конструктор по умолчанию, конструктор копий, аргументы конструктора по умолчанию и другие конструкторы (словосочетание "аргументы конструктора по умолчанию" можно толковать двояко: как аргументы, передаваемые конструктору по умолчанию, и как аргументы, которыми, наряду с любыми другими функциями, могут по умолчанию обладать конструкторы; как вы увидите в дальнейшем, эта неоднозначность достаточно точно отражает положение дел, — прим. перев.).
Как уже было отмечено, конструкторы — это функции-члены, не возвращающие значений (даже типа void). Другой их особенностью является то, что их имя должно в точности, включая регистр символов, совпадать с именем класса. То есть если класс называется FOO, то его конструктор также должен называться FOO.
Конструктор ПО умолчанию. В руководстве Annotated Reference Manual (ARM) отмечается, что конструктор по умолчанию (default constructor) — это конструктор, не принимающий аргументов. Это существенно, поскольку ARM— это первоисточник, на котором в значительной степени основываются документы стандарта ANSI C++.
Таким образом, конструктор по умолчанию произвольного класса выглядит так:
class ANY_CLASS
{
public:
ANY_CLASS(); // конструктор по умолчанию };