Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Rabochy_stol / 21 конструкторы классов

.docx
Скачиваний:
14
Добавлен:
31.05.2015
Размер:
16.26 Кб
Скачать

21 конструкторы классов

  Конструктор по умолчанию

      Конструктором по  умолчанию для класса Х называется такой онструктор,  который не принимает  никаких  аргументов:

Х::Х(). Если длякласса несуществует конструкторов, определяемых пользователем,  то Turbo C++ генерирует конструктор  по умолчанию.  При таких объявлениях,  как Х х,  конструктор по умолчанию создает объект х.

  Важное примечание:

      Как и все функции, конструкторымогут иметь аргументы по умолчанию. Например, конструктор 

    X::X(int, int = 0) 

     можетпринимать один  или  два  аргумента.  Если  данный конструктор будет представлен только с одним  аргументом,не-достающий второй аргумент будет принят как int 0.  Аналогичным образом, конструктор 

    X::X(int = 5, int = 6)

      может принимать двааргумента,  один аргумент,  либо  не принимать аргументов вообще,причем в каждом случаепринимают-ся соответствующие умолчания. Однако, конструктор по умолча-нию  Х::Х()  не ринимаетаргументов вообще,  иего не следуетпутать с конструктором, например, X::X(int = 0), который мо-жет либо принимать один аргумент, либо не принимать аргумен-тов.

      При вызове конструкторов следует  избегать  неоднознач-ностей.   В   следующем   примере   возможно   неоднозначноевосприятие компилятором конструкторапо умолчанию и конструк-тора, принимающего целочисленный параметр:

    class X

    (*     public:        X();        X(int i = 0);     *);

     main()    (*

       X one(10);  // так можно: используется X::X(int)

     X two; // так нельзя; неоднозначно задано, используется

// ли X::X() или X::X(int = 0)     ...       return 0;

 

 Конструктор копирования

      Конструктор копированиядля класса Х это такой конструктор, который может быть вызван с одним единственным аргументом типа X:  X::X(const X&) или X::(const X&,  int =  0).  Вконструкторе копирования допустимыми такжеявляются аргументыпо умолчанию.  Конструкторыкопирования запускаются при копировании объекта данного класса, обычно в случае объявления синициализацией объектом другого класса:  X x = y.  Turbo C++

генерирует конструктор копирования для класса X автоматически,  если такой конструктор необходим, но в классе Х неопределен.