С++ для начинающих

       

Специальные функции-члены


Существует специальная категория функций-членов, отвечающих за такие действия с объектами, как инициализация, присваивание, управление памятью, преобразование типов и уничтожение. Такие функции называются конструкторами. Они вызываются компилятором неявно каждый раз, когда объект класса определяется или создается оператором 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 обсуждаются конвертеры и функции управления памятью.)



Содержание раздела