Специальные функции-члены
Существует специальная категория функций-членов, отвечающих за такие действия с объектами, как инициализация, присваивание, управление памятью, преобразование типов и уничтожение. Такие функции называются конструкторами. Они вызываются компилятором неявно каждый раз, когда объект класса определяется или создается оператором new. В объявлении конструктора его имя совпадает с именем класса. Вот, например, объявление конструктора класса Screen, в котором заданы значения по умолчанию для параметров hi, wid и bkground:
class Screen { public: Screen( int hi = 8, int wid = 40, char bkground = '#'); // объявления других функций-членов не изменяются |
};
Определение конструктора класса Screen
выглядит так:
Screen::Screen( int hi, int wid, char bk ) : _height( hi ), // инициализировать _height значением hi _width( wid ), // инициализировать _width значением wid _cursor ( 0 ), // инициализировать _cursor нулем _screen( hi * wid, bk ) // размер экрана равен hi * wid // все позиции инициализируются // символом '#' { // вся работа проделана в списке инициализации членов // этот список обсуждается в разделе 14.5 |
}
Каждый объявленный объект класса Screen
автоматически инициализируется конструктором:
Screen s1; // Screen(8,40,'#') Screen *ps = new Screen( 20 ); // Screen(20,40,'#') int main() { Screen s(24,80,'*'); // Screen(24,80,'*') // ... |
}
(В главе 14 конструкторы, деструкторы и операторы присваивания рассматриваются более подробно. В главе 15 обсуждаются конвертеры и функции управления памятью.)